Solution 1 :

var title = $("#essay-title").val(); is executed immediately on page visit, so it’s always empty and not updated. Move that part inside sentencecase:

function capitalizeFirstLetter(string) {
  return string.charAt(0).toUpperCase() + string.slice(1);
}

function sentencecase() {

  var title = $("#essay-title").val();
  var sentenceCaseTitle = capitalizeFirstLetter(title.toLowerCase());
  $("#essay-title").trigger("change paste");
  $("#essay-title").val(sentenceCaseTitle);
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input type="text" id="essay-title" value="TEST TITLE">
<button type="button" onclick="sentencecase()">OK
</button>

Solution 2 :

You have to move the following code into your sentencecase function,

var title = $("#essay-title").val();
var sentenceCaseTitle = capitalizeFirstLetter(title.toLowerCase());

Problem is that if the above code is outside of the function it will only be executed once, so that is why you keep getting the same value.

Demo

function capitalizeFirstLetter(string) {
  return string.charAt(0).toUpperCase() + string.slice(1);
}

//alert( lowerCaseTitle );
function sentencecase() {
  var title = $("#essay-title").val();
  var sentenceCaseTitle = capitalizeFirstLetter(title.toLowerCase());
  $("#essay-title").trigger("change paste");
  $("#essay-title").val(sentenceCaseTitle);
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input type="text" id="essay-title" value="TEST TITLE">
<button type="button" onclick="sentencecase()">OK
</button>

Problem :

I’m trying to make a input sentence case tool but when I type anything different it keeps returning the value=”” text.

I’d like to make an exception for pasted or replaced text. So when I type a new value in input it should return that string into sentence case.

Here is the code snippet I’ve made:

function capitalizeFirstLetter(string) {
  return string.charAt(0).toUpperCase() + string.slice(1);
}

var title = $("#essay-title").val();
var sentenceCaseTitle = capitalizeFirstLetter(title.toLowerCase());
    //alert( lowerCaseTitle );
function sentencecase() {
    $("#essay-title").trigger("change paste");
    $("#essay-title").val(sentenceCaseTitle);
}

https://jsfiddle.net/c105vedo/

By