问题描述
|
我已经整理了一个不错的表格,花了我几个小时,并进行了一些漂亮的jQuery焦点验证。 focusout属性附加到onload的输入字段。然后,我通过触发焦点提交事件onsubmit重用验证功能,但是我不知道如何在任何验证功能失败的情况下禁用表单提交。完整示例在这里(jsfiddle)
缩减示例:
addLoadEvent(AttachVal);
函数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,但这只是返回一个对象。可以从该函数获取响应文本吗?还是有另一种方法可以强制从我的个人验证功能中停止当前正在运行的Submit事件?
与往常一样,任何建议都将不胜感激。
担
解决方法
这是更新的小提琴。我所做的是在SubmitRegForm()方法的返回中,只是看到了多少个刻度图像可见,如果它为零,则继续提交表单。
,捕获表单提交的正确方法是这样的:
$(\'#form\').submit(function(e){
// Unfocus and validation logic here.
e.preventDefault();
});
e.preventDefault()
将停止提交表格。