jQuery验证addMethod元素转换为字符串

时间:2015-08-06 03:37:27

标签: jquery jquery-validate

我有这段代码

jQuery.validator.addMethod( "multi_select", function( value, element , params ) {

 var string = element.toString();
 console.log(string);

}, 'Please select atleast one element.');

我想将元素值作为字符串。我怎样才能做到这一点 ??

1 个答案:

答案 0 :(得分:0)

如果您只想检查多选元素中至少选择了一个项目,那么只需使用所需的规则

jQuery(function($) {
  var validator = $('#myform').validate({
    rules: {
      multi: {
        required: true
      }
    },
    messages: {}
  });
});
<script type="text/javascript" src="//code.jquery.com/jquery-1.11.3.js"></script>
<script type="text/javascript" src="//cdnjs.cloudflare.com/ajax/libs/jquery-validate/1.13.1/jquery.validate.js"></script>
<script type="text/javascript" src="//cdnjs.cloudflare.com/ajax/libs/jquery-validate/1.13.1/additional-methods.js"></script>

<form id="myform" method="post" action="">
  <select name="multi" multiple>
    <option>1</option>
    <option>2</option>
    <option>3</option>
    <option>4</option>
  </select>
  <input type="submit" value="Save" />
</form>

但是如果你想实现自己的逻辑,传递给方法的value参数将是input / select元素的值,如果是多选元素,它将是一个数组(如果是没有选择项目)所以

jQuery.validator.addMethod("multi_select", function(value, element, params) {
  console.log(value)
  return value && value.length > 0
}, 'Please select atleast one element.');

jQuery(function($) {
  var validator = $('#myform').validate({
    rules: {
      multi: {
        multi_select: true
      }
    },
    messages: {}
  });
});
<script type="text/javascript" src="//code.jquery.com/jquery-1.11.3.js"></script>
<script type="text/javascript" src="//cdnjs.cloudflare.com/ajax/libs/jquery-validate/1.13.1/jquery.validate.js"></script>
<script type="text/javascript" src="//cdnjs.cloudflare.com/ajax/libs/jquery-validate/1.13.1/additional-methods.js"></script>

<form id="myform" method="post" action="">
  <select name="multi" multiple>
    <option>1</option>
    <option>2</option>
    <option>3</option>
    <option>4</option>
  </select>
  <input type="submit" value="Save" />
</form>