使用Jquery Validation插件(dependency-expression)

时间:2010-09-21 18:47:30

标签: jquery validation plugins dependencies

我正在使用jQuery Validation插件,我正在尝试弄清楚如果选择前缀(Mr,Ms等)或后缀(Jr,Sr,PhD),我可以如何创建名称字段。这就是我所拥有的:

$('#geninfo').validate({
  rules:{
   firstname: {required: function(element){
      return $("#prefix").val() != " ";
      }
    }
   },
  messages:{
   firstname: 'enter a name'
   }       
 });

这是HTML:

<ul>
                <li><label for="prefix">Prefix:</label>
                 <select name="prefix" id="prefix">
                      <option selected="selected" value=" ">Select One</option>
                        <option value="ms">Ms</option>
                        <option value="miss">Miss</option>
                        <option value="mrs">Mrs</option>
                        <option value="mr">Mr</option>
                        <option value="dr">Dr</option>
                    </select>
                </li>
<li><label for="firstname">First Name:</label> <input type="text" name="firstname" id="firstname" /></li>
<li><label for="suffix">Suffix:</label>
                 <select name="suffix" id="suffix">
                      <option selected="selected" value=" ">Select One</option>
                        <option value="jr">Jr</option>
                        <option value="sr">Sr</option>
                        <option value="ii">II</option>
                    </select>
                </li></ul>

我似乎无法弄清楚如何编写js以便它会占用前缀||后缀。关于我做错了什么的线索? 提前谢谢。

2 个答案:

答案 0 :(得分:1)

我认为您正在寻找depends规则 - http://docs.jquery.com/Plugins/Validation/validate#toptions

 rules:{
   firstname: {
     required: {
       depends: function(element) {
         return $("#prefix").val() != " ";
       }
     }
   }
 },

答案 1 :(得分:1)

HTML中有错误

             <select name="prefix" id="prefix">
                  <option selected="selected" value=" ">Select One</option>
                    <option value="ms">Ms</option>
                    <option value="miss">Miss</option>
                    <option value="mrs">Mrs</option>
                    <option value="mr">Mr</option>
                    <option value="dr">Dr</option>
                </select>

在上面的HTML代码中

<option selected="selected" value=" ">Select One</option>

值有“空格” - “”不为空

当你检查时,你正在检查空而不是空格,所以它不会产生任何结果。

将您的代码更改为已删除所选选项

的空间
             <select name="prefix" id="prefix">
                  <option selected="selected" value="">Select One</option>
                    <option value="ms">Ms</option>
                    <option value="miss">Miss</option>
                    <option value="mrs">Mrs</option>
                    <option value="mr">Mr</option>
                    <option value="dr">Dr</option>
                </select>

并执行了这个java脚本,效果很好。

        $('#geninfo').validate({
            rules: {
                firstname: {
                    required: function () {
                        return $('#prefix').val() == ''
                    }
                }
            },
            messages: {
                firstname: alert('enter a name')  //enter a name'
            }

        });

希望这有帮助,