使用javascript进行实时验证-onchange仅触发一次
所以我只是在用js测试一些东西,基本上第一个输入中的数字必须大于第二个输入中的数字,提交按钮才能被激活 “获取”按钮被正确禁用,但如果我更改号码,它将不会再次激活使用javascript进行实时验证-onchange仅触发一次,javascript,html,validation,onchange,Javascript,Html,Validation,Onchange,所以我只是在用js测试一些东西,基本上第一个输入中的数字必须大于第二个输入中的数字,提交按钮才能被激活 “获取”按钮被正确禁用,但如果我更改号码,它将不会再次激活 <!DOCTYPE HTML> <html> <body> <input type='number' id='first' onchange="validateNumber()"/><br> <input type='number' id='second' onchan
<!DOCTYPE HTML>
<html>
<body>
<input type='number' id='first' onchange="validateNumber()"/><br>
<input type='number' id='second' onchange="validateNumber()"/><br>
<script type="text/javascript" >
function validateNumber()
{
var first = document.getElementById('first').value;
var second = document.getElementById('second').value;
if(first > second){
document.getElementById('sub').disabled=false;
}else{
document.getElementById('sub').disabled=true;
}
}
</script>
<input type="submit" id="sub"/>
</body>
</html>
函数validateEnumber()
{
var first=document.getElementById('first')。值;
var second=document.getElementById('second')。值;
如果(第一次>第二次){
document.getElementById('sub')。disabled=false;
}否则{
document.getElementById('sub').disabled=true;
}
}
编辑:
数字输入的箭头触发onchange似乎是导致问题的原因您可能需要使用
onkeyup()
,因为只有当您将焦点切换到另一个元素时才会调用onchange()
此外,您的函数当前正在比较字符串。使用parseInt转换为整数,然后进行比较。以下代码适用于我:
<html>
<body>
<input type='number' id='first' onkeyup="validateNumber()"/><br>
<input type='number' id='second' onkeyup="validateNumber()"/><br>
<script type="text/javascript" >
function validateNumber()
{
var first = parseInt(document.getElementById('first').value, 10);
var second = parseInt(document.getElementById('second').value, 10);
if(first > second){
document.getElementById('sub').disabled=false;
} else {
document.getElementById('sub').disabled=true;
}
}
</script>
<input type="submit" id="sub" disabled="disabled" />
</body>
</html>
函数validateEnumber()
{
var first=parseInt(document.getElementById('first')。值,10);
var second=parseInt(document.getElementById('second')。值,10);
如果(第一次>第二次){
document.getElementById('sub')。disabled=false;
}否则{
document.getElementById('sub').disabled=true;
}
}
您必须添加onclick
和onkeyup
事件,以便响应鼠标交互和从剪贴板插入:
尝试将onfocus和onblur事件绑定到
<input type='number' id='first' onchange="validateNumber()" onfocus="validateNumber()" onblur="validateNumber()"/><br>
<input type='number' id='second' onchange="validateNumber()" onfocus="validateNumber()" onblur="validateNumber()"/><br>
这对html5数字输入不起作用,对于onkeyup,我根本没有得到任何响应。你注意到我在尝试时出现了一个错误,但它不起作用,因为这样可能会尝试使用onfocus
事件来代替它?@comfrek:onkeyup()
就是让它在代码中起作用的原因。嗯,很抱歉,但是可以使用鼠标粘贴更改该值。。一旦改变就是needed@Hippoonclick
是必需的,因为您也可以用鼠标更改值!嗯……看起来像是onkeyup
、onclick
和onchange
的组合,效果更好。如果没有onchange()
,使用鼠标粘贴并使用选项卡切换焦点时不会触发回调。在我的情况下,onblur
是最好的解决方案,因为我想在输入字段失去焦点(即用户停止编辑)时检查内容。赞成票:)
<input type='number' id='first' onchange="validateNumber()" onfocus="validateNumber()" onblur="validateNumber()"/><br>
<input type='number' id='second' onchange="validateNumber()" onfocus="validateNumber()" onblur="validateNumber()"/><br>