Jquery.Validate基于条件

时间:2014-07-28 21:22:58

标签: jquery validation select conditional

我正在尝试使用Jquery.Validate()

进行条件验证

我有一个名为selectAmount的选择 和一个名为txtAmount的输入

如果selectAmount值="其他"

我希望txtAmount是必需的。

<div id="container">
    <form id="AddForm" method="POST" action="#">

                    <select name="selectAmount">
                        <option value="10">$10</option>
                        <option value="25">$25</option>
                        <option value="50">$50</option>
                        <option value="100">$100</option>
                        <option value="250">$250</option>
                        <option value="500">$500</option>
                        <option value="Other">Other</option>
                    </select>

                    <input name="txtAmount" type="text" placeholder="Enter Amount" />
            <button id="AddToCart">Add to Cart</button>
    </form>
</div>

我在这里设置规则。 我遇到的问题是:

"txtAmount": {
                required: function(element){
                    alert($("#selectAmount").val());
                    return false;

$('#selectAmount').val() //is always undefined

$(document).ready(function () {
  $("#AddForm").validate({
    rules: {
        "selectAmount" : {
            required: true
        },
        "txtAmount": {
            required: function(element){
                alert($("#selectAmount").val());
                return $("#selectAmount").val() == 'Other';
            }
        }
    },
    messages: {

        "selectAmount": {
            required: "Amount selection is required."
        },

        "txtAmount": {
            required: "Amount is required."
        }
    },
    submitHandler: function (form) { // for demo
        return false; // for demo
    }
});

});

http://jsfiddle.net/9YjH2/2/

有人可以帮忙吗?

1 个答案:

答案 0 :(得分:2)

你其实很亲密。 #中的$("#selectAmount")告诉jQuery查找具有selectAmount id的元素。但是selectAmount是name属性,而不是id。因此,如果您只是将id=selectAmount属性添加到select,那么一切正常。这是fiddle(警告已注释掉)。此处还有关于jQuery selectors.的更多信息如果您不想添加id属性,请查看attribute equals selector.但是,我建议您使用id

所以最后只需改变这一行:
<select name="selectAmount">

<select name="selectAmount" id="selectAmount">