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

jQuery validation addMethod element convert to a string

我有这个代码

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

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

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

我想获取字符串形式的元素值。我怎样才能做到这一点 ??

如果您只想检查至少一个项目被 select 编入多个 select 元素中,那么只需使用所需的规则

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 元素的值,如果是多个 select 元素它将是一个数组(如果没有项目是 selected 则为空)所以

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>