jquery验证器组-如何使用它?

qhhrdooz  于 2023-03-01  发布在  jQuery
关注(0)|答案(3)|浏览(92)

我有3个字段和按钮:

<input type="text" id="a" />
<input type="text" id="b" />
<input type="text" id="c" />
<input type="button" id="d" />
<label for="all_fields" class="error" style="display:none;">Please fill exactly one field</label>

我想使用jquery验证器插件来验证一个字段是否填充了文本。什么是最好的方法?

6qftjkof

6qftjkof1#

行为:只要其中一个输入字段设置为nu,其值将允许计算发生,如果所有3个字段均为空,则将发生错误。您还将注意到类.at_least_oneaddMthod:require_from_group.
anyhoo代码应该说得更好。
良好链接:http://docs.jquery.com/Plugins/Validation
希望有帮助:)

    • 超文本标记语言**
<form action="results.whatever" target="_blank" id="HULK">

    <div style="clear:both">
    <label for="a">A</label>
    <div style="float:right">
            <input name="a" type="text" class="at_least_one idleField"></div>
    </div>
    <div style="clear:both">
        <label for="b">B</label>
        <div style="float:right">
            <input name="b" type="text" class="at_least_one idleField">
        </div>
    </div>
    <div style="clear:both">
        <label for="c">C</label>
        <div style="float:right">
            <input name="c" type="text" class="at_least_one idleField">
        </div>
    </div>
    <div id="button">
        <input name="" type="submit" value="Calculate" class="calc_button" style="cursor:hand">
    </div>
    </form>
<div id="errorContainer">
    <h4>errors</h4>
    <ol>
    </ol>
</div>
    • 代码**
jQuery.validator.addMethod("require_from_group", function(value, element, options) {
  var numberRequired = options[0];
  var selector = options[1];
  var fields = $(selector, element.form);
  var filled_fields = fields.filter(function() {
    // it's more clear to compare with empty string
    return $(this).val() != ""; 
  });
  var empty_fields = fields.not(filled_fields);
  // we will mark only first empty field as invalid
  if (filled_fields.length < numberRequired && empty_fields[0] == element) {
    return false;
  }
  return true;
// {0} below is the 0th item in the options field
}, jQuery.format("Please fill out at least {0} of these fields."));

$(document).ready(function(){
  var container = $('#errorContainer');
  $("#HULK").validate(  {

    // We must to force validation of entire form because
    // when we remove value from 2-nd field 
    // the 1-st field becomes invalid.
    onfocusout: function() { $("#HULK").valid() },
    onkeyup: function() { $("#HULK").valid() },

    rules: {
      // note: you can use variable to avoid repeating 
      // of the same code
      a: { 
        number: true,
        require_from_group: [1, ".at_least_one"]
      },
      b: {
        number: true,
        require_from_group: [1,".at_least_one"]
      },
      c: {
        number: true,
        require_from_group: [1,".at_least_one"]
      }
    },
    success: function(label) {  
      label.html(" ").addClass("checked"); 
    },
    errorContainer: container,
    errorLabelContainer: $("ol", container),
    wrapper: 'li',
    meta: "validate"
  });
});
9vw9lbht

9vw9lbht2#

只是为了给@Tats_innit帖子添加更多的 prop 。
对于jquery.validationadditional-method-1.10.js中的require_from_group的1.10.0发布版本,github上存在一个未决问题。

github问题:require_from_group disables other rules

smileyanp@github在他的解决方案中引用了这篇文章,他重用了@Tats_innit的函数,并创建了一个test,显示它可以正常工作**,并且不会禁用**在require_from_group之前定义的其他规则上的验证。
这篇文章是在这里作为一个节省时间,因为这烧了3小时的谷歌搜索这样一个小细节。

修复:

只需更新additional-method-1.10.js或在加载additional-method-1.10.js后执行此代码(以覆盖函数)。

jQuery.validator.addMethod("require_from_group", function(value, element, options) {
  var numberRequired = options[0];
  var selector = options[1];
  var fields = $(selector, element.form);
  var filled_fields = fields.filter(function() {
    // it's more clear to compare with empty string
    return $(this).val() != ""; 
  });
  var empty_fields = fields.not(filled_fields);
  // we will mark only first empty field as invalid
  if (filled_fields.length < numberRequired && empty_fields[0] == element) {
    return false;
  }
  return true;
// {0} below is the 0th item in the options field
}, jQuery.format("Please fill out at least {0} of these fields."));
fv2wmkja

fv2wmkja3#

我试着用require_from_group在一个magento网站上运行,但是根本不能运行,即使有了这个补丁,在浪费了太多的时间之后,我用html中的title属性把范围缩小到magento,然后我遇到了这个jquery validation , when input field has a title attribute , instead of error message title is given as the error message
希望这能帮助别人保存时间!!

相关问题