我在同一页面上有三个表单,我想使用jQuery单独验证它们

时间:2014-01-06 17:03:35

标签: jquery forms validation

我还是jQuery的新手,并尝试在一个页面上设置三个单独表单的验证。表单非常简单,第一个只是文本输入和提交,第二个只是单个选择元素并提交。我希望每个提交都被禁用,直到其相应的元素具有内容。

到目前为止我所管理的是禁用所有提交,直到所有元素都有内容。

我需要做的是重写所以每个表格都是特定的。

http://codepen.io/drgs100/pen/tJCzv

1 个答案:

答案 0 :(得分:1)

我不确定你想要什么,让我们想要实现以下内容:

$('form').each(function(){
     $(this).submit();
})

更新:

对不起,我没有看到你的修改,我已经想到了类似下面的内容,我认为可以通过一些提示为你编写更好的代码。

$("input[type=text], select").keyup(function(){
  if($(this).val() != ''){
        $(this).next().attr("disabled", false);
  }else{
    $(this).next().attr("disabled", true);
  }
}).change(function(){
  if($(this).val() != ''){
        $(this).next().attr("disabled", false);
  }else{
    $(this).next().attr("disabled", true);
  }
});

这对你更有意义吗?

更新2:

基于@Jon评论这里是一个更好的OP问题函数,因为没有人能够回答为什么不帮助其他人处理相同的情况:

var submits = $("form .submit");

function containBlanks (elem) {
  return $(elem).siblings(".required").val() === "";
}

function requiredFilledIn(elems){
  elems.each(function() {
    if (containBlanks(this)) {
      $(this).attr("disabled", "disabled");
    } else {
      $(this).removeAttr("disabled");
    }
  });
}

requiredFilledIn(submits);

$("form span").hide();

$("input[type=text], select").focus(function(){
        $(this).next().next().fadeIn("slow");
  }).blur(function(){
        $(this).next().next().fadeOut("slow");
  }).keyup(function(){
        requiredFilledIn($(this).siblings("input[type=submit]"));
}).change(function(){
        requiredFilledIn($(this).siblings("input[type=submit]"));
});

@Jon

的信用