2

I am working on the below snippet. Why am I not able to detect the input change using this?

$("#fname").on("change", function () {
   console.log("The text has been changed.");
});

$("button").on("click", function () {
    $("#fname").text('Alex');
    $("#fname").val('Alex');
});

$("#fname").on("change", function () {
   console.log("The text has been changed.");
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
 <input type="text" id="fname" name="fname"><br><br>
<button type="button">Click Me!</button>
halfer
  • 19,471
  • 17
  • 87
  • 173
Behseini
  • 5,746
  • 20
  • 67
  • 114

2 Answers2

2

This only gets triggered if the user sets the value. You can trigger it manually.

$("#fname").val('Alex').change();
Kruspe
  • 523
  • 3
  • 16
1

You have to trigger change programmatically if you are applying the change programmatically.

$("button").on("click", function () {
    $("#fname").text('Alex').trigger('change');
    $("#fname").val('Alex').trigger('change');
});

$("#fname").on("change", function () {
   console.log("The text has been changed.");
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
 <input type="text" id="fname" name="fname"><br><br>
<button type="button">Click Me!</button>
Udo E.
  • 2,381
  • 2
  • 18
  • 28