[英]check if input is empty set to zero in javascript
当用户使用backspace
删除输入中的值时,该功能正常工作,但如果他删除该值并设置一个新的数字,则删除新值并再次设置为零。
<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);
}
});
});
我不知道我的代码中有什么问题请帮忙吗?
jsFiddle: http : //jsfiddle.net/2shadgtw/2/
不要使用setTimeout
。 而是尝试映射这三个事件:
$(document).ready(function() {
$("#txtField").on("keyup change blur", function() {
if ($(this).val().trim() == "")
$(this).val(0);
});
});
小提琴: http : //jsfiddle.net/5hm6e8hL/
我会使用blur
事件来做这个而不是keyup
:
$(document).ready(function() {
$("#txtField").on("blur", function() {
if (!$(this).val().trim())
$(this).val(0);
});
});
如果输入失去焦点时为空 - 则给它一个值0。
否则 - 什么也不做。
问题是你有setTimeout
。 如果用户清除input
然后在下一秒输入一个值,则setTimeout
的函数仍会关闭,将该value
设置为0
。
尝试检查setTimeout
的input
,如下所示:
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);
}
});
});
执行此操作的最佳方法是使用focusout()函数。 尝试这个
<input type="text" id="txtField" value="0" />
$("#txtField").focusout(function() {
var v = $(this).val();
console.log(v)
if (v == "") {
$("#txtField").val(0);
}
});
如果字段为空,它将在焦点输出时将值设置为零。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.