无法通过javascript来触发价值变化

时间:2015-03-21 21:06:36

标签: javascript jquery model-view-controller

我对某段代码有问题。

该值由qr扫描仪系统更新,当值等于或包含单词“Job”时,我需要一个JS函数来触发

<h3>
     <input type="text" id="qr-value"  value="" readonly />
     <button>Reset Scan</button>
</h3>

$(document).ready(function () {
    $('#qr-value').onchange('input', function () {
        if ($('#qr-value').val() == 'hello stephen') {
            alert('Changed!')
        }
    });
});

更新:

QR.JS(其中qr代码输入文本框)

   function read(a)
{
    //$("#qr-value").text(a);
    var TheTextBox = document.getElementById("qr-value");
    TheTextBox.value = a;

}

qrcode.callback = read;

2 个答案:

答案 0 :(得分:4)

没有onchange() - 你要找的是.on('change',handler)。我将你的内容加载到一个jsfiddle中,暂时删除了“readonly”,以便我可以测试它,并按如下方式更改事件绑定:

$(document).ready(function () {
    $('#qr-value').on('change', function () {
        if ($('#qr-value').val() == 'hello stephen') {
            alert('Changed!')
        }
    });
});

小提琴:http://jsfiddle.net/BenjaminRay/xgjzppdk/

您使用代码扫描程序更新字段的事实增加了另一个复杂程度,但您可以更新该值并以编程方式触发更改事件,如下所示:

qr.js:

function read(a) {
    $("#qr-value").val(a).change();
}

qrcode.callback = read;

完整示例的小提琴:http://jsfiddle.net/BenjaminRay/pfrLs0nr/

注意:“测试”按钮只是调用read('hello stephen')来模拟qrcode回调中会发生什么。该领域又恢复了原状。

答案 1 :(得分:0)

QR扫描仪(与其他扫描仪一样)以编程方式将值强制进入字段。因此,onchange事件不会触发(就像使用JavaScript修改值一样)。

对于大多数刷卡扫描仪,作为扫描值的一部分添加了额外的换行符,导致触发表单提交时出现“ENTER”。您是否有可能更改您的QR码值以在最后包含换行符?

如果没有,加载后您可能需要“轮询”该字段以查看是否已修改。