在javascript中检查输入是否为空并设置为零
当用户使用在javascript中检查输入是否为空并设置为零,javascript,Javascript,当用户使用backspace删除输入中的值时,功能正常工作,但如果用户删除该值并设置一个新数字,如1,则新值将被删除并再次设置为零 <input type="text" id="txtField" value="0" ></input> $(document).ready(function() { $("#txtField").keyup(function() { var v = $(this).val(); console.log(v)
backspace
删除输入中的值时,功能正常工作,但如果用户删除该值并设置一个新数字,如1,则新值将被删除并再次设置为零
<input type="text" id="txtField" value="0" ></input>
$(document).ready(function() {
$("#txtField").keyup(function() {
var v = $(this).val();
console.log(v)
if (v == "") {
console.log(v)
setTimeout(function() {
$("#txtField").val(0);
}, 1000);
}
});
});
$(文档).ready(函数(){
$(“#txtField”).keyup(函数(){
var v=$(this.val();
控制台日志(v)
如果(v==“”){
控制台日志(v)
setTimeout(函数(){
$(“#txtField”).val(0);
}, 1000);
}
});
});
我不知道我的代码有什么问题请帮忙
jsiddle:不要使用
setTimeout
。请尝试使用以下三个事件进行映射:
$(document).ready(function() {
$("#txtField").on("keyup change blur", function() {
if ($(this).val().trim() == "")
$(this).val(0);
});
});
Fiddle:问题是您有
setTimeout
。如果用户清除输入
,然后在下一秒输入一个值,则设置超时
中的功能仍将关闭,将值
设置为0
请尝试检查设置超时
中的输入
,如下所示:
JavaScript
$("#txtField").keyup(function() {
setTimeout(function() {
if ($("#txtField").val().trim().length === 0) {
$("#txtField").val(0);
}
}, 1000);
});
setTimeout
是一个糟糕的解决方案。但ypu可以使用if语句:
$(document).ready(function() {
$("#txtField").keyup(function() {
var v = $(this).val();
console.log(v)
if (v == "") {
console.log(v)
setTimeout(function() {
if(!$("#txtField").val()){
$("#txtField").val(0);
}
}, 1000);
}
});
});
我会使用
模糊事件来执行此操作,而不是键控
:
$(document).ready(function() {
$("#txtField").on("blur", function() {
if (!$(this).val().trim())
$(this).val(0);
});
});
如果输入在失去焦点时为空-则给它一个值0
否则——什么也不做
最好的方法是使用focusout()函数。试试这个
<input type="text" id="txtField" value="0" />
$("#txtField").focusout(function() {
var v = $(this).val();
console.log(v)
if (v == "") {
$("#txtField").val(0);
}
});
$(“#txtField”).focusout(函数(){
var v=$(this.val();
控制台日志(v)
如果(v==“”){
$(“#txtField”).val(0);
}
});
如果字段为空,则在焦点输出时将该值设置为零
这不起作用,我无法更改默认值,它将返回零immediately@Sora你到底想干什么?什么是默认值?我的意思是值0这是我做的:1-如果我用空格删除0,输入仍然为空2-如果我删除0并将值返回10@Sora你看到了吗,
标签没有
。@Sora这是我的错误。更正了。是的,但是如果页面中有一个提交按钮,并且用户使用backspace清空输入并单击该按钮,则该值将被忽略empty@Sora你确定吗?看看这个:-如果删除文本字段的内容,然后单击按钮,模糊事件仍然会发生,将空值替换为0。似乎我错了,我在未测试结果的情况下发布了我的评论。。很抱歉