动态检测文本框值是否已更改

时间:2019-10-15 04:27:31

标签: javascript jquery

即使用户没有像以下情况那样输入文本框值,是否也可以检测到文本框的更改?我有一些情况,例如第一次加载页面时,texbox会加载数据。

$("#txt1").change(function(){
  $("#txt2").val("1")
  //$("#txt2").change();
});

$('#txt2').on("change", function() {
  // some computation will happen here.
  alert("1");
});

$("#btn1").click(function(){
  $("#txt2").val("1");
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

<input type="text" id="txt1">
<input type="text" id="txt2" name='text1'>
<button id="btn1">
    Click
</button>

2 个答案:

答案 0 :(得分:2)

JavaScript 更改的值不会触发任何事件,因此在这种情况下您无法捕获事件。 您可以使用 interval

将监视者实现为您的输入值

var oldValue = $("#txt2").val();
setInterval(function() {
    var currentValue = $("#txt2").val();
    if (currentValue !== oldValue) {
      $("#txt2").trigger("change");
      oldValue = currentValue;
    }
}, 100);

$("#txt1").change(function(){
  $("#txt2").val("1")
});

$('#txt2').on("change", function() {
  // some computation will happen here.
  alert("1");
});

$("#btn1").click(function(){
  $("#txt2").val("1");
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>


<input type="text" id="txt1">
<input type="text" id="txt2" name='text1'>
<button id="btn1">
Click
</button>

答案 1 :(得分:1)

您知道在textbox1更改事件上您正在更改第二个文本框值,您需要手动触发它

$(document).ready(function () {

 $("#txt1").change(function () {

   $("#txt2").val("1")
   $("#txt2").trigger("change");

 });

 $("#txt2").change(function () {

    alert("1");

 });

})