1

我刚刚整理了一个漂亮的表单,花了我几个小时,并带有一些漂亮的 jQuery focusout 验证。focusout 属性附加到 onload 的输入字段。然后我通过触发焦点事件 onsubmit 重新使用我的验证功能,但我不知道如果我的任何验证功能失败,如何禁用表单提交。此处的完整示例(jsfiddle)

削减示例:

addLoadEvent(AttachVal);

函数附加值(){

  $('input[name="FirstName"]').focusout(NameTest);
  $('input[name="LastName"]').focusout(NameTest);
  $('form[name="Register"]').submit(SubmitRegForm);

}

函数提交RegForm(){

  $('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 时提交,但这只是返回一个对象。是否可以从该函数中获取响应文本?...也许?或者是否有另一种方法可以强制停止当前从我的个人验证功能中运行的提交事件?

与往常一样,非常感谢任何建议。

4

2 回答 2

2

捕获表单提交的正确方法是这样的:

$('#form').submit(function(e){
    // Unfocus and validation logic here.
    e.preventDefault();
});

e.preventDefault()将阻止表单提交。

于 2011-05-23T22:51:36.783 回答
1

这是一个更新的小提琴。我所做的是在 SubmitRegForm() 方法的返回中只查看有多少刻度图像可见,如果它为零,请继续提交表单。

于 2011-05-23T22:56:45.417 回答