2011-05-10 69 views
13

如果#category字段为空,我正在尝试使下拉列表需要填写。如果字段为空,则需要Jquery验证下拉列表

谢谢!

JQUERY ATTEMPT#1:

$("#uploadDocsForm").validate({ 
    rules: { 
     name: { 
      required: true, 
      minlength: 2, 
      maxlength: 255 
     }, 
     cat_id: { 
      required: function(element) { 
       return $("#category").val() == ''; 
      } 
     } 
    }, 
    messages: { 
     name: 'Please enter a <b>Document Name</b>.', 
     cat_id: 'Please select a <b>Category</b>.' 
    } 
}); 

JQUERY ATTEMPT#2:

$("#uploadDocsForm").validate({ 
    rules: { 
     name: { 
      required: true, 
      minlength: 2, 
      maxlength: 255 
     }, 
     cat_id: { 
      required: { 
       depends: function(element) { 
        return $("#category").val() == ''; 
       } 
      } 
     } 
    }, 
    messages: { 
     name: 'Please enter a <b>Document Name</b>.', 
     cat_id: 'Please select a <b>Category</b>.' 
    } 
}); 

HTML:

<form name="uploadDocsForm" id="uploadDocsForm"> 
    <label for="name">Document Name</label> 
    <input name="name" id="name" type="text" class="textbox"/> 
    <label for="cat_id">Category</label> 
    <select name="cat_id" id="cat_id" class="dropdown"> 
    <option selected>Please Select Category</option> 
    <option>------------------------</option> 
    <option value="1">test cat</option> 
    </select> 
    <label for="category">New Category</label> 
    <input name="category" id="category" type="text" class="textbox"/> 
    </form> 

回答

18
$("#uploadDocsForm").validate({ 
    rules: { 
     name: { 
      required: true, 
      minlength: 2, 
      maxlength: 255 
     }, 
     cat_id: { 
      required: { 
       depends: function(element) { 
        return $("#category").val() == ''; 
       } 
      } 
     } 
    }, 
    messages: { 
     name: 'Please enter a <b>Document Name</b>.', 
     cat_id: 'Please select a <b>Category</b>.' 
    } 
}); 

的取决于功能现在检查如果类别元素是填充,如果是的话,第二个是必需的。否则它是可选的(意思可以填充)。

使用案例:

  • 类别填写,CAT_ID空:无效
  • 类别填写,CAT_ID填充:有效
  • 类别空,CAT_ID空:有效
  • 类别空,CAT_ID填充:有效
+0

它似乎并没有正常工作。我想这也:CAT_ID:{ \t要求:{ \t \t取决于:!功能(元素){ \t \t \t回报($( “#类”)VAL()= '' && $(元素) .val()!=''); \t \t} \t}} 您 – 2011-05-11 14:07:36

+0

建议没有触发现有的错误(如果名称是空的),但是当我增加了“要求”部分仍引发的名字错误,但没有写的CAT_ID任何消息。这似乎是“工作”,但错误消息被抑制。 – 2011-05-11 14:10:15

+0

@Stephen我已根据[rules]部分中的[this source](http://docs.jquery.com/Plugins/Validation/validate)更正了代码。如果它仍然不起作用,请为我们设置一个jsFiddle以便使用,因为这应该起作用。换句话说,你的第二次尝试看起来是正确的,如果这不工作,建立一个jsFiddle。 – Chad 2011-05-11 15:16:06

3

我看起来'依赖'不再被支持。

我用下面的,它的工作原理:

<form name="uploadDocsForm" id="uploadDocsForm"> 
    <label for="name">Document Name</label> 
    <input name="name" id="name" type="text" class="textbox"/> 
    <label for="cat_id">Category</label> 
    <select name="cat_id" id="cat_id" class="dropdown"> 
    <option value="" selected>Please Select Category</option> 
    <option>------------------------</option> 
    <option value="1">test cat</option> 
    </select> 
    <label for="category">New Category</label> 
    <input name="category" id="category" type="text" class="textbox"/> 
    </form> 

通知的期权价值=“”造成自VAL失败验证为空

$("#uploadDocsForm").validate({ 
    rules: { 
     name: { 
      required: true, 
      minlength: 2, 
      maxlength: 255 
     }, 
     cat_id: { 
      required: true 
      } 
     } 
    }, 
    messages: { 
     name: 'Please enter a <b>Document Name</b>.', 
     cat_id: 'Please select a <b>Category</b>.' 
    } 
}); 
+0

也适用于我。只要你有一个默认的空白选项,就不需要依赖和返回值!干杯,大卫。 – 2013-02-28 17:19:51