4

我正在尝试使用 jQuery Validate 插件来验证下拉列表。它正确验证了我的表单的其余部分。但它不适用于下拉菜单。

这是我的 jQuery:

$('#campaignForm').validate({
    rules: {
         campaign_name: {
             required: true
         },
         html_url: {
             required: {
                 depends: function(element) {
                     return $('#html_url').val() == 'none';
                 }
              }
         }
    },
    messages: {
        campaign_name: 'Please enter a campaign name',
        html_url: 'Please select a template'
    }
});

这是我的 HTML:

<select name="html_url" id="html_url">
<option value="none">Select One...</option>
...
</select>

我究竟做错了什么?我的变量名是否以某种方式发生冲突。广告系列名称的规则工作正常。

4

3 回答 3

10

如果您只想制作一个select元素required,则不会使用depends:,因为它不“依赖”另一个元素。在您的使用中,该depends属性只是切换required规则。这里的问题不是required规则......它不需要切换。问题是当所有选项都已经包含 a 时,该required规则将不起作用value,因为required将始终满足。

只需使用value=""默认选项,然后像任何其他元素一样设置规则。

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

jsFiddle 演示

HTML:

<form id="campaignForm">   
    <select name="html_url" id="html_url">  
        <option value="">Select One...</option>
        <option value="one">ONE</option>
        <option value="two">TWO</option>
    </select>
    <input type="submit" />
</form>​

jQuery:

$(document).ready(function() {
    $('#campaignForm').validate({
        rules: {
            html_url: {
                required: true
            }
        },
        messages: {
            html_url: {
                required: 'Please select a template'
            }
        }
    });
});​
于 2012-11-27T00:30:31.180 回答
5

如果由于某种原因您不能像 Spark 所说的那样将值设置为空白,您可以添加自己的 JQuery 验证函数而不是默认的必需预设。

$.validator.addMethod("aFunction",
    function(value, element) {
        if (value == "none")
            return false;
        else
            return true;
    },
    "Please select a value");

$('#campaignForm').validate({
    rules: {
         campaign_name: {
             required: true
         },
         html_url: {
             aFunction: true
         }
    },
    messages: {
        campaign_name: 'Please enter a campaign name',
        html_url: 'Please select a template'
    }
});
于 2014-11-08T08:21:05.740 回答
-1
$('#campaignForm').validate({
    rules: {
        html_url: {
            min: 1,
        }
    },
    messages: {
        html_url: 'Please select a template',
    }
});
于 2019-08-27T12:05:58.200 回答