我可以改进我的验证吗?
问题描述:
所以我想验证我的表单使用jQuery,这是我的想法和它的工作原理,但是这样做的最好方法,也许我可以用更少的代码更有效地做到这一点?我可以改进我的验证吗?
<script type="text/javascript">
$(document).ready(function()
{
$("#frmCatAdd").submit(function()
{
var name = $("#edtName").val();
if (name == "")
$("#edtName").css("border", "1px solid red")
else
$("#frmCatAdd").submit();
return false;
});
});
</script>
答
是的 - 不仅仅依赖于javascript验证。你也需要做服务器端验证!这非常重要。如果我关闭javascript,则绕过了整个验证。
答
建议:
$(document).ready(function() {
$("#frmCatAdd").submit(function() {
var $edtname = $("#edtName"),
name = $edtname.val();
if (!$.trim(name).length) {
$edtName.css("border", "1px solid red")
return false;
}
});
});
答
有一件事你可以改善将是摆脱无限循环的。通过从.submit()
呼叫.submit()
,你已经做了一个循环。
在这种情况下,您可以使用本机submit
。
$("#frmCatAdd").submit(function() {
var name = $("#edtName").val();
if (name == "")
$("#edtName").css("border", "1px solid red")
else
this.submit(); // call native submit method instead
return false;
});
Though @jAndy's suggestion摆脱else
和移动return false
到if()
更好。如果您在处理程序中运行异步代码,那么从submit
调用submit
更重要。
答
$("#frmCatAdd").submit(function() {
$e = $(this).find("#edtName");
if (!$.trim($e.val()).length) {
$e.css("border", "1px solid red")
return false;
}
});
答
显而易见的答案:
<form id=frmCatAdd>
<input id=edtName required type=text>
</form>
当然,我要再说一遍,你将需要服务器端验证,以及情绪。
http://bassistance.de/jquery-plugins/jquery-plugin-validation/ – bzlm 2011-01-10 15:58:24