如何更改输入值:当另一个输入的值时文本:文本在没有用户与其他输入交互的情况下更改

时间:2012-12-25 21:50:32

标签: jquery javascript-events

我有两个输入[type = text]。

<input type=text id=inputOne>
<input type=text id=summary>

当#InputOne发生变化时,我想用#inputOne.value更新#summary.value(这是问题)。我无法解决的问题是“user”是没有直接访问/更改#inputOne ,所以它的模糊,键盘,更改,onmouseover等事件都没有启动,或者它们是,但我无法使它工作。

用户使用unknownFunction更改#inputOne.value,我无法修改,也无法访问。

<script>
  ...
  unknownFunction(){
     ...
     $("#inputOne").val(aDynamicValue);
  }
</script>

我试过的基本jQuery函数如下。这不起作用:))

<script>
   ...
   $("#inputOne").change(function(){
       $("#summary").val("Value: "+$(this).val()+"...");
   });
</script>

3 个答案:

答案 0 :(得分:1)

如果您无法修改更新值的功能,则必须轮询源以进行更改。

setInterval(function() {
  var inputOne = $('#inputOne'), summary = $('#summary'), previous = $inputOne.val();
  return function() {
    var current = inputOne.val();
    if (current !== previous) {
      summary.val('Value: ' + current + '...');
      previous = current;
    }
  }
}(), 100);

这将检查输入每100毫秒进行一次更改,并在更新值时更新摘要。

答案 1 :(得分:0)

根据HTML5 spec,以编程方式更改输入元素的值应触发inputchange事件。当更改元素的内容时发生input事件,当提交时发生change事件,例如,从元素中删除。

这表明绑定input事件的处理程序应该比change更好。试一试,看看它是否有效。

答案 2 :(得分:0)

这适用于所有浏览器和Jquery&lt; = v1.10

$('#inputOne').on('keyup', function () {
    $("#summary").val("Value: "+$(this).val()+"...");
});

文本框输入字段更改事件会像您期望的那样触发,jQuery .Change事件仅在支持html5的浏览器上正常工作