无法获取表单以验证一个或其他输入字段

时间:2014-03-15 17:34:34

标签: javascript jquery jquery-validate

我试图得到它,如果用户填写了至少一个输入,那么表单就会被提交。

我想我不确定这段代码是什么:jQuery Validate - require at least one field in a group to be filled做得很好,让它适合我。

任何帮助将不胜感激:

在我看了上面的答案后,我尝试了这个:

我有这样的表格:

<form id="myForm">
  <input class="fillone" id="bigform" name="message" type="text" required/>
  <input class="fillone" id="bigform" name="number" type="text" required/>
  <input type="submit" id="btnSubmit" />
</form>

和脚本:

if(!$(element).data('being_validated')) {
     var fields = $(selector, element.form);
     fields.data('being_validated', true);
     fields.valid();
     fields.data('being_validated', false);
   }
  return validOrNot;
  }, jQuery.format("Please fill at least {0} of these fields."));

  $.validator.addMethod("require_from_group", function(value, element, options) {
    var selector = options[1];
    var validOrNot = $(selector, element.form).filter(function() {
    return $(this).val();
  }).length >= options[0];

  $("#myForm").validate({
    groups: {
      message:  {require_from_group: [1,".fillone"]},
      number: {require_from_group: [1,".fillone"]},
  });

1 个答案:

答案 0 :(得分:1)

你的整个剧本都是混乱的胡说八道,充满了语法错误....这是一个断断续续的点点滴滴的汇编。这就像你将require_from_group切成两段代码并在删除一些内容后换掉这两段...

if(!$(element).data('being_validated')) {  // this part comes from INSIDE 'require_from_group'
     var fields = $(selector, element.form);
     fields.data('being_validated', true);
     fields.valid();
     fields.data('being_validated', false);
   }
  return validOrNot;
  // this line should be the last line of 'addMethod', NOT after a comma following a conditional
  }, jQuery.format("Please fill at least {0} of these fields."));  

  // this is start of 'addMethod" but its guts are just above    
  $.validator.addMethod("require_from_group", function(value, element, options) {
    var selector = options[1];
    var validOrNot = $(selector, element.form).filter(function() {
    return $(this).val();
  }).length >= options[0];  // 'addMethod' can't end here!

  $("#myForm").validate({
    // this is all wrong...
    groups: {
      message:  {require_from_group: [1,".fillone"]},
      number: {require_from_group: [1,".fillone"]},
  });

忘记手动包括required_from_group。只需添加已经有required_from_group方法的the latest additional-methods.js file

现在让我们谈谈您实施.validate()方法......

$("#myForm").validate({
    groups: {
          message:  {require_from_group: [1,".fillone"]},
          number: {require_from_group: [1,".fillone"]},
});

和你的HTML:

<input class="fillone" id="bigform" name="message" type="text" required/>
<input class="fillone" id="bigform" name="number" type="text" required/>

<强>问题

1)groups选项仅用于将错误消息分组在一起,不用于分配规则。它只包含一个任意名称和一个空格分隔的字段名称列表,其消息将被分组在一起。不要将此选项require_from_group规则混淆。虽然它们可以一起使用,但它们彼此无关。 See documentation

groups: {  // group some messages together
    myGroup:  "message number"  // names of fields to group their messages
} // <- you were also missing this closing brace

2)每当在.validate()方法中声明规则时,必须使用rules选项声明。我在rules内看不到.validate()选项。

rules: {  // declare the rules
    message: {  // name of field
        require_from_group: [1,".fillone"]
    },
    number: {  // name of field
        require_from_group: [1,".fillone"]
    }
}

3)您已将required属性放在input个元素中。这告诉插件两个字段都有required规则。如果您只需要其中一个required,那么您也无法同时使用requiredrequire_from_group[1, ..]表示中至少有一个是required。如果您确实要使用required规则,请从input元素中删除require_from_group属性。

<input class="fillone" id="bigform" name="message" type="text" />
<input class="fillone" id="bigform" name="number" type="text" />

$("#myForm").validate({  // initialize the plugin
    rules: {  // declare the rules
        message: {  // name of field
            require_from_group: [1,".fillone"]
        },
        number: {  // name of field
            require_from_group: [1,".fillone"]
        }
    },
    groups: {  // group some messages together
        myGroup:  "message number"  // names of fields to group their messages
    }
});

工作演示:http://jsfiddle.net/DB5ZL/