Javascript 在输入错误时,将文本输入保持为只读4s
对于以下代码Javascript 在输入错误时,将文本输入保持为只读4s,javascript,html,css,Javascript,Html,Css,对于以下代码 <input type="text" name="textinput" ><br> <style> input:-moz-read-only { /* For Firefox */ background-color: red; } input:read-only { background-color: red; } .hang{ -moz-animation-
<input type="text" name="textinput" ><br>
<style>
input:-moz-read-only { /* For Firefox */
background-color: red;
}
input:read-only {
background-color: red;
}
.hang{
-moz-animation-name: example;
animation-name: example;
-moz-animation-duration: 4s;
animation-duration: 4s;
}
</style>
<script>
document.formex.numberinput.onchange = checkIfNumber;
function checkIfNumber(){
if (parseInt(document.formex.numberinput.value) == NaN){
document.formex.numberinput.innerHTML = document.formex.numberinput.value;
document.formex.numberinput.readOnly = "true";
document.formex.numberinput.className = "hang";
document.formex.numberinput.readOnly = "false";
}
}
</script>
输入:-moz只读{/*用于Firefox*/
背景色:红色;
}
输入:只读{
背景色:红色;
}
杭{
-moz动画名称:示例;
动画名称:示例;
-moz动画持续时间:4s;
动画持续时间:4s;
}
document.formex.numberinput.onchange=checkIfNumber;
函数checkIfNumber(){
if(parseInt(document.formex.numberinput.value)==NaN){
document.formex.numberinput.innerHTML=document.formex.numberinput.value;
document.formex.numberinput.readOnly=“true”;
document.formex.numberinput.className=“hang”;
document.formex.numberinput.readOnly=“false”;
}
}
假设回调函数检查输入是否为
number
原语类型
if
回调函数块只执行最后一次赋值
您能帮我理解这个问题吗?您需要使用
setTimeout
并将您的代码更新为以下内容
function checkIfNumber(){
if (isNaN(parseInt(document.formex.numberinput.value))){
document.formex.numberinput.innerHTML = document.formex.numberinput.value;
document.formex.numberinput.readOnly = "true";
document.formex.numberinput.className = "hang";
setTimeout(function(){
document.formex.numberinput.readOnly = false;
}, 4000);
}
}
document.formex.numberinput.readOnly=“false”;不会真正等待动画结束,注意没有第二个参数的
parseInt
。如果有人输入“0xAF”,它可能会说这是一个有效的数字。。。有关更多信息,请参阅。我仍然看到在超时之前的三行代码不正确execute@overexchange-请检查我的最新答案。要检查NaN,我们应该使用isNaN函数isinput[readonly]
一个错误的选择器?@overexchange-不,这是可以的。然而,对于我们正在编写的代码,一旦设置了属性,我们就永远不会删除它。因此,只要将readonly属性添加到element,该样式就适用于删除代码不起作用的属性。请测试一下。