jQuery表单验证(如果==“执行此操作”)仅适用于第一次输入
jQuery form validation ( if == "" do this) only works on first input
我有一个表单,我正在使用jQuery来验证输入是否为空。(我也在使用引导程序)
<form action="" method="post">
<div id="name_input" class="form-group">
<input id="name" type="text" name="name" placeholder="Name">
<span class="glyphicon glyphicon-remove form-control-feedback name_span></span>
</div>
<div id="email_input" class="form-group">
<input id="email" type="email" name="email" placeholder="Email">
<span class="glyphicon glyphicon-remove form-control-feedback email_span></span>
</div>
<input type="submit" name="submit" value="save">
</form>
使用jQuery
$(document).ready(function() {
$('.form-control-feedback').hide();
$(".submit").click(function() {
var name = $("#name").val();
if (name == "") {
$("#name_input").addClass("has-error has-feedback");
$(".name_span").show();
return false;
}
var email = $("#email").val();
if (email == "") {
$("#email_input").addClass("has-error has-feedback");
$(".email_span").show();
return false;
}
});
});
当我使用这个代码并且两个输入都为空时,类"haserror"answers"hasfeedback"只附加到第一个输入。
如果第一个输入被填充,而第二个输入是空的,那么类会添加到第二个,如果我也清空了第一个,那么它也会得到类。
但如果我采取相反的方式,那么第一个输入首先为空,第二个输入之后为空,那么类仍然只添加到第一个。
此外,当我填写其中一个时,我想删除Class,但我不能用做到这一点
} else {
$("#name_input").removeClass("has-error has-feedback");
$(".name_span").hide();
}
因为这会提交表格,很明显我不能添加return false;
,因为即使填写了表格,也会阻止表格的处理……对此有什么建议吗?
return
语句会立即停止执行函数。所以这个代码在这里
if (name == "") {
$("#name_input").addClass("has-error has-feedback");
$(".name_span").show();
return false;
}
var email = $("#email").val();
if (email == "") {
$("#email_input").addClass("has-error has-feedback");
$(".email_span").show();
return false;
}
说如果name == ""
,甚至不要评估电子邮件。相反,您可能希望使用一个标志来查看是否发生了任何错误。
var dataIsValid = true;
var name = $("#name").val();
if (name == "") {
$("#name_input").addClass("has-error has-feedback");
$(".name_span").show();
dataIsValid = false;
}
var email = $("#email").val();
if (email == "") {
$("#email_input").addClass("has-error has-feedback");
$(".email_span").show();
dataIsValid = false;
}
return dataIsValid;
正如@imvain2所指出的,您还需要删除错误类。否则,一旦你得到一个错误,它看起来总是有一个错误。
var dataIsValid = true;
var name = $("#name").val();
if (name == "") {
$("#name_input").addClass("has-error has-feedback");
$(".name_span").show();
dataIsValid = false;
} else { // Valid, remove the error classes
$("#name_input").removeClass("has-error has-feedback");
$(".name_span").hide();
}
var email = $("#email").val();
if (email == "") {
$("#email_input").addClass("has-error has-feedback");
$(".email_span").show();
dataIsValid = false;
} else { // Valid, remove the error classes
$("#email_input").removeClass("has-error has-feedback");
$(".email_span").hide();
}
return dataIsValid;
返回第一个错误。如果你想列出每一个,你需要删除单独的返回语句。
$(document).ready(function() {
$('.form-control-feedback').hide();
$(".submit").click(function() {
var name = $("#name").val(),
errorMsg = [];
if (name == "") {
$("#name_input").addClass("has-error has-feedback");
$(".name_span").show();
errorMsg.push('Invalid Name');
}
var email = $("#email").val();
if (email == "") {
$("#email_input").addClass("has-error has-feedback");
$(".email_span").show();
errorMsg.push('Invalid Email');
}
if (errorMsg.length > 0 ){
// alert('Errors:'n' + errMsg.join(''n'));
return false;
}
});
});
相关文章:
- jQuery-将列表项的一个元素移动到同一项的另一个元素中+对我的列表中的每个项执行此操作
- jQuery表单验证(如果==“执行此操作”)仅适用于第一次输入
- 我将如何在 for 循环中执行此操作
- 突出显示与perl正则表达式匹配的HTML部分 - 在服务器端perl或客户端javascript中执行此操作
- bind():您正在将一个组件方法绑定到该组件.React会自动为您执行此操作
- 在emberjs中执行此操作的正确方法
- 如果当前页面为X,请执行此操作
- if(function()===false){执行此操作}
- 如果选中此复选框,则对其邻居执行此操作
- 当您滚动到特定页面位置时,如何执行此操作,该功能将启动一次
- locaction.reload(true) 会导致强制获取 - 设置 .src 时如何执行此操作
- Jquery:如果选中单选按钮 A,则执行此操作.如果选中 B,则执行此操作
- ndb.key() - >使用 Javascript 执行此操作
- jquery 如果 CSS 高度> Xpx 执行此操作
- 确定哪个元素是第一个并执行此操作
- 如何在jQuery中执行此操作?(匹配特定单词并使其成为颜色)
- 更新指令中的attrs值 - 如何在AngularJS中执行此操作
- php (#200) 用户尚未授权应用程序执行此操作
- 如果输入框中有给定的字符串,则执行此操作
- 如果输入字段在数组中找到值,请执行此操作(jQuery/Javascript)