onChange未在移动设备上触发

时间:2018-02-09 09:31:51

标签: javascript html

我知道这个问题已被多次询问,但我找不到合适的答案。我没有使用select代码。

我的问题是我有一个类似这样的JS代码:

document.getElementById("roomnumber").value = '205';

我有一个充满活力的人,只是我把' 205'在这个例子中,因为它基本上是一样的。我有这样的输入:

<input type="text" id="roomnumber" name="roomnumber" onChange="roomnumberValue();">

到目前为止一切顺利。所以我想要的是在这个值改变时改变一些其他输入字段的值。所以我在上面给出的代码中使用了onChange

最后,这是roomnumberValue()的代码:

function roomnumberValue() {
    var blade1 = {!! json_encode($rooms_cat_1->toJson()) !!};
    var roomnumber = document.getElementById("roomnumber").value;
    if (blade1.indexOf(roomnumber) < 0) { // doesn't exist
        alert('doesnt exist!');
    } else { // does exist
        document.getElementById("btowelamt").value = "2";
    }
}

所以这很简单吧?我正在使用JSON encode来使用Laravel刀片引擎中的变量从DB输出数组。我正在使用indexOf来检查输入字段的值是否在给定的JSON数组上有任何匹配的记录。这一点工作得很好。当我在输入字段中手动输入数字205时,它也适用于PC跨浏览器(至少是Chrome和Firefox)。但是当使用document.getElementById("roomnumber").value = '205';时,它不起作用。也在手机上。因为就我而言,这个领域需要集中注意力和不集中注意力?我希望能够使用document.getElementById("btowelamt").value = "2";更改document.getElementById("roomnumber").value = '205';的值,而不必手动输入focus。我不想keypressvar countA,countB,countC,countD,countE,countF = 0 checkFirst(){ Promise.all([this.checkWords()]).then( values => { this.doSomething() } } doSomething(){ // add value into database } 。我希望JS更改值,并根据该值,其他字段值更改。我不知道如何处理这个问题。

由于

2 个答案:

答案 0 :(得分:2)

onChange无法工作的原因是,当特定字段失去焦点时触发onChange,如果该值与之前的值不匹配,则触发该事件。

您可以通过将onChange替换为onKeyUp

来检测移民更改

答案 1 :(得分:0)

找到了解决方案。

我正在使用QR扫描仪将房间号输入到输入字段。以下是QR码结果放在输入字段内的代码:

document.getElementById("roomnumber").value = content;

所以我在上述代码之后立即调用了@The SuperKat和@Matt Luccas Phaure Jensen提到的roomnumberValue()。我不知道为什么我之前没有想到这一点。