无法让 javascript 触发价值变化

Cant get javascript to fire on value change

我的某段代码有问题。

该值由 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(在文本框中输入二维码)

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

}

qrcode.callback = read;

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

对于大多数刷卡扫描仪,有一个额外的换行符作为扫描值的一部分添加,导致 "ENTER" 发生触发表单提交。您是否有机会更改 QR 码值以在末尾包含换行符?

如果没有,加载后您可能需要'poll'更改字段以查看它是否已被修改。

没有 onchange() - 您正在寻找的是 .on('change', handler)。我将您的内容加载到 jsfiddle 中,暂时删除了 "readonly" 以便我可以对其进行测试,并按如下方式更改了事件绑定:

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

Fiddle: http://jsfiddle.net/BenjaminRay/xgjzppdk/

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

qr.js:

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

qrcode.callback = read;

Fiddle 完整示例:http://jsfiddle.net/BenjaminRay/pfrLs0nr/

注意:"Test" 按钮只是调用 read('hello stephen') 来模拟二维码回调中会发生什么。该字段恢复为只读状态。