HTML数字输入错误:jquery时无限循环.更改事件被调用


HTML Numerical Input Bug: infinite loop when jquery.change event called

我用PHP创建了一个HTML表,如下所示:

$i = 1;
while($row = mysql_fetch_array($result)){
Print "<tr>"; 
Print "<td><input id='prEff[$i]' type='number' step='0.01' min='0.01' max='0.99' value='.85' </td>";
Print "<td>".$row['ErdEfficiency'] . "</td>";
Print "<td>".$row['TheoreticalSEC'] . "</td></tr>";
$i++;
}

输入单元格有一个jquery。当号码在范围内更改时调用的更改函数。在调试期间,单击一次向上或向下按钮(在chrome中)会导致输入遍历所有值,直到达到上限或下限。因此,函数被调用,但只有在整个范围的值被遍历之后。

如果页面在没有调试的情况下刷新,则调用jquery,但按钮会卡住,因为它遇到了所描述的错误。

下面是简单的jquery函数:
$('[id^="prEff["]').change(function (){
        var test = this;
        alert("hi");
});

这是一个很难追踪的bug,我不确定是什么导致的。它发生在输入中的onchange属性,以及javascript eventListener和jquery更改中。这可能是PHP打印输入的方式,但我已经尝试了几种不同的方法,但都没有成功。

您的代码中似乎有一个未关闭的<input>标记。确保你关闭它,你应该没事:

Print "<td><input id='prEff[$i]' type='number' step='0.01' min='0.01' max='0.99' value='.85' /> </td>";