控制由脚本自动填充的输入

时间:2017-10-04 20:01:06

标签: javascript jquery

我有这个脚本,它检查变量的值是否匹配隐藏输入的值并返回confirmMessage。

var的值可能由另一个脚本手动或自动填充。

当手动输出结果时,但是当输入被脚本自动填充时我没有确认消息。

  <script>
 $('#vr').on('keyup change', function() {
    var vr = document.getElementById('vr');
    var confirm_vr = document.getElementById('confirm_vr');
    var message = document.getElementById('confirmMessage');


    if(vr.value == confirm_vr.value){

        message.innerHTML = "MATCH";

    }else{

        message.innerHTML = "! Not match";

    }
});
</script>

<span id='confirmMessage' ></span>

<input id='vr' name='vr'  />

<input type='hidden' id='confirm_vr' name='confirm_vr'  />

2 个答案:

答案 0 :(得分:0)

如何使用脚本自动设置输入值&#34;?#?只是document.getElementById('vr').value = 'hello'?作为最简单的解决方案,我建议将处理程序逻辑提取到全局函数中,并在通过代码更改输入时调用它:

<script>
  function processChange() {
    var vr = document.getElementById('vr');
    var confirm_vr = document.getElementById('confirm_vr');
    var message = document.getElementById('confirmMessage');
    if(vr.value == confirm_vr.value){
        message.innerHTML = "MATCH";
    }else{
        message.innerHTML = "! Not match";
    }
  };
  $(function() {
    $('#vr').on('keyup change', processChange);
  });
</script>

<span id='confirmMessage' ></span>
<input id='vr' name='vr'  />
<input type='hidden' id='confirm_vr' name='confirm_vr'  />

<script>
  $(function() {
    document.getElementById('vr').value = 'hello';
    processChange();
  });
</script>    

答案 1 :(得分:0)

添加另一个答案,因为@dhilt的答案要求您在每次添加新侦听器时更改设置输入值的代码。

&#13;
&#13;
    private void commentTextBox_PreviewLostKeyboardFocus(object sender, KeyboardFocusChangedEventArgs e)
    {
        (sender as TextBox).RaiseEvent(new RoutedEventArgs(LostFocusEvent));
    }
&#13;
$('#vr').on('keyup change', function() {
    var vr = document.getElementById('vr');
    var confirm_vr = document.getElementById('confirm_vr');
    var message = document.getElementById('confirmMessage');
    if(vr.value == confirm_vr.value){
        message.innerHTML = "MATCH";
    }else{
        message.innerHTML = "! Not match";

    }
});

$('#vr').on('keyup change', (e) => {
    // This will get called without the code that sets
    // input.value having to know about this handler
    console.log('Value changed', e);
});

$('button').on('click', function() {
    var vr = document.getElementById('vr');
    vr.value += 'X';
    // Notice that you don't need to know what handlers are set
    $(vr).trigger('change');
});
&#13;
&#13;
&#13;