0

我正在尝试验证表单以检查THIS JSFIDDLEvalidateEmpty()中的输入是否为空当我直接在函数内部 使用整个函数体时,我能够成功验证表单,.submit()但只是为了保持一切井井有条,我试图把函数 ( validateEmpty()) 中的所有内容,只需通过函数调用它,.submit()但无论出于何种原因,验证过程都无法正常工作!

这是我的代码:

$(document).ready(function() {  
function validateEmpty(){
        var abort = false;
        $("div.err").remove();
        $(':input[required]').each(function() {
            if ($(this).val()==='') {
                $(this).parent().after('<div class="err">This is a Requierd Field</div>');
                abort = true;
            }
        }) 
        if (abort) { return false; } else { return true; }
}
$('#myform').submit(function() {
validateEmpty();
    })
}); 

你能告诉我我做错了什么吗?谢谢

4

2 回答 2

3

validateEmpty函数返回truefalse结束,但在你的事件处理程序上你永远不会,return所以 jQuery 永远不会得到那个值。您所需要的只是return向您的处理程序添加一个调用:

$('#myform').submit(function() {
  return validateEmpty();
});

另外,请注意,如果您不需要做任何额外的事情,您可以直接传递该函数:

$('#myform').submit(validateEmpty);

根据评论中的要求,这里有两种方法来参数化validateEmpty函数:

function validateEmpty($inputs) {
  var abort = false;
  $("div.err").remove();

  $inputs.each(function() {
    if ($(this).val()==='') {
        $(this).parent().after('<div class="err">This is a Requierd Field</div>');
        abort = true;
    }
  });

  if (abort) { return false; } else { return true; }
}

$("#myform").submit(function() {
  // Take the 'required' inputs inside #myform only
  var $inputs = $(this, "input[required]");
  return validateEmpty($inputs);
});
于 2013-11-09T04:34:57.013 回答
1

请在您的 jsfiddle 示例中添加 jquery 框架并试用

$('#myform').submit(function() {
  return validateEmpty();
});
于 2013-11-09T04:48:42.447 回答