我刚刚整理了一个很好的表单,花了我几个小时,一些natty jQuery焦点验证。 focusout属性附加到输入字段onload。然后我通过触发聚焦事件onsubmit重新使用我的验证函数,但我不知道的是如果我的任何验证函数失败,如何禁用表单提交。完整示例here (jsfiddle)
削减示例:
addLoadEvent(AttachVal);
function AttachVal(){
$('input[name="FirstName"]').focusout(NameTest); $('input[name="LastName"]').focusout(NameTest); $('form[name="Register"]').submit(SubmitRegForm);
}
函数SubmitRegForm(){
$('input[name="FirstName"]').trigger('focusout'); $('input[name="LastName"]').trigger('focusout'); alert ("Submitting");
返回 假;
}
验证功能:
function NameTest(){
var result = true;
var EnteredValue = $(this).val();
var alphaExp = /^[a-zA-Z ]+$/;
if (!(EnteredValue.match(alphaExp)))
{
var result = "Invalid";
}
if (result !== true)
{
$(this).parent().next().children('span.ErrorDescript').text(result);
}
else
{
$(this).parent().next().children('span.ErrorDescript').text("");
}
}
我尝试在SubmitRegForm函数中附加一个变量,如下所示:
var FNStat = $('input[name="FirstName"]').trigger('focusout');
打算检查所有并提交,如果它们都返回true,但只返回一个对象。是否有可能从该功能获得响应文本?...也许?或者是否有另一种方法可以强制停止当前在我的个人验证功能中运行的提交事件?
与往常一样,任何建议都非常感谢。
丹
答案 0 :(得分:2)
捕获表单提交的正确方法如下:
$('#form').submit(function(e){
// Unfocus and validation logic here.
e.preventDefault();
});
e.preventDefault()
将停止提交表单。
答案 1 :(得分:1)
Here's an updated fiddle.我所做的是在SubmitRegForm()方法的返回中,只看到有多少刻度图像是可见的,如果它是零则继续并提交表格。