我正在使用以下jQuery脚本。这是为了在用户离开空输入元素时提醒用户。
function checkEmpty(elem){
$(elem).focusout(function (){
if(!$(elem).val() || $(elem).val()==" "){
alert("This Field can't be empty");
return true;
}
});
}
以HTML格式调用
onclick="checkEmpty(this);
如果我第一次将输入元素留空,则只提供一个警告
但是,当我将相同的输入元素留空一次以上时,我会收到连续的警报信息
我使用调试器来查看发生了什么,它一次又一次地循环。
哪里出错了?
答案 0 :(得分:1)
每次源元素为focusout
时,您都会绑定clicked
事件。处理程序不断添加每次点击,您只需要一次。而不是直接绑定点击事件处理程序绑定onfocusout
。
结合
onfocusout="checkEmpty(this);
处理程序功能
function checkEmpty(elem){
if(!$(elem).val() || $(elem).val()==" "){
alert("This Field can't be empty");
return true;
}
}
答案 1 :(得分:1)
试试此代码
<!DOCTYPE html>
<html>
<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
<script>
function checkEmpty(elem)
{
if(!$(elem).val() || $(elem).val()==" ")
{
alert("This Field can't be empty");
return true;
}
}
</script>
</head>
<body>
Enter your name: <input type="text" onblur="checkEmpty(this)">
<p>Write something in the input field, and then click outside the field to lose focus (blur).</p>
</body>
</html>
答案 2 :(得分:0)
您应该在页面加载时绑定处理程序。
试试这个:
$(document).ready(
$(elem).focusout(function (){
if(!$(elem).val() || $(elem).val()==" "){
alert("This Field can't be empty");
}
});
);
编辑:如果您想将它用于多个文本字段,那么您只需要像这样修改您的功能:
function check(elem){
if(!elem.data.val() || elem.data.val()==" "){
alert("This Field can't be empty");
}
}
然后使用它:
$(document).ready(
// Input element 1
$(elem1).focusout($(elem1), check);
// Input element 2
$(elem2).focusout($(elem2), check);
);
这是一个JSFiddle示例:Stack Overflow: LINQ with Skip and Take
注意:我对jQuery并不精通,所以我先用小提琴尝试过。对于迟到的编辑感到抱歉。