无法使javascript在值更改时启动

无法使javascript在值更改时启动,javascript,jquery,model-view-controller,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('in

我对某段代码有问题

该值由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扫描器(与其他扫描器一样)通过编程将值强制输入字段。因此,onchange事件不会触发(就像使用JavaScript修改值一样)

对于大多数刷卡扫描仪,作为扫描值的一部分,会添加一个额外的换行符,导致在提交表单时出现“回车”。您是否有可能更改二维码值,使其在末尾包含换行符

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

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

对于大多数刷卡扫描仪,作为扫描值的一部分,会添加一个额外的换行符,导致在提交表单时出现“回车”。您是否有可能更改二维码值,使其在末尾包含换行符

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

没有onchange()-您要查找的是.on('change',handler)。我将您的内容加载到JSFIDLE中,临时删除了“readonly”,以便对其进行测试,并更改了事件绑定,如下所示:

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

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

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

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

qrcode.callback = read;
举个完整的例子:

注意:“Test”按钮只是调用read('hello stephen')来模拟qrcode回调中会发生什么。该字段已恢复为只读。

没有onchange()-您要查找的是.on('change',handler)。我将您的内容加载到JSFIDLE中,临时删除了“readonly”,以便对其进行测试,并更改了事件绑定,如下所示:

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

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

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

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

qrcode.callback = read;
举个完整的例子:


注意:“Test”按钮只是调用read('hello stephen')来模拟qrcode回调中会发生什么。该字段已恢复为只读。

我有一个qr.js文件,该文件将信息放入文本框(请参阅更新)您能否共享qr.js中编辑文本框的行?var TheTextBox=document.getElementById(“qr值”);TheTextBox.value=a;假设jQuery是在qr.js之前加载的,您应该能够将该行更改为:$('#qr value').val(a).change();谢谢@Benjamin Ray:)我想我知道我现在能做什么了:)我不知道如果没有用户交互,更改()是不可能的,现在我知道了:)谢谢:)回答和解释很好:)我有一个qr.js文件,它将信息放入文本框(见更新)您可以在qr.js中共享编辑文本框的行吗?var TheTextBox=document.getElementById(“qr值”);TheTextBox.value=a;假设jQuery是在qr.js之前加载的,您应该能够将该行更改为:$('#qr value').val(a).change();谢谢@Benjamin Ray:)我想我知道我现在能做什么:)我不知道如果没有用户交互,更改()是不可能的,现在我知道了:)谢谢:)很好的回答和解释:)