【问题标题】:Jquery Validator - check input against a list of accepted valuesJquery Validator - 根据接受值列表检查输入
【发布时间】:2011-04-17 20:30:16
【问题描述】:

我通常只使用下拉列表执行此操作,但客户要求它是文本输入...

基本上,我想使用 Jquery 验证器来检查用户是否在文本输入框中输入了 50 个有效的美国州缩写中的 1 个。如果没有,他们会得到一个错误。我似乎找不到执行此操作的功能。非常感谢任何帮助!

【问题讨论】:

    标签: jquery validation


    【解决方案1】:

    这是您可以添加以用于jquery validate 的验证方法

    首先你声明一个验证器:

    jQuery.validator.addMethod("isstate", function(value) {
        var states = [
            "AL", "AK", "AZ", "AR", "CA", "CO", "CT", "DE", "FL", "GA",
            "HI", "ID", "IL", "IN", "IA", "KS", "KY", "LA", "ME", "MD",
            "MA", "MI", "MN", "MS", "MO", "MT", "NE", "NV", "NH", "NJ",
            "NM", "NY", "NC", "ND", "OH", "OK", "OR", "PA", "RI", "SC",
            "SD", "TN", "TX", "UT", "VT", "VA", "WA", "WV", "WI", "WY",
            "AS", "DC", "FM", "GU", "MH", "MP", "PR", "PW", "VI"
        ];
        return $.inArray(value.toUpperCase(), states) != -1;
    }, "Data provided is not a valid state");
    

    然后应用验证器

    $("#myform").validate()
    

    在您的表单中,您希望将类添加到表单元素以进行检查

    <input type="text" value="de" class="isstate" />
    

    这是working demo

    【讨论】:

    • 麦格莱姆,谢谢!这正是我正在寻找的,但我在我的 FireFox 错误控制台中得到了这个:错误:states.toUpperCase 不是函数。
    • 对不起,因为 value 是一个字符串,需要大写才能检查它是否在数组中,我认为它是区分大小写的
    • @Mcgrailm 我试过jQuery.validator.addMethod("isstate", function(value.toUpperCase()) { var states = ['PA',"CA"] // of course you will need to add more return $.inArray(value,states); }, "Data provided is not a valid sate"); - 这似乎不正确。知道我做错了什么吗?
    • @paul 我忘记了 inarray 返回 -1 而不是 false 所以我不得不更改代码来解决这个问题
    • 如果它对任何人都有帮助...这是我最终使用的确切功能:jQuery.validator.addMethod("isstate", function(value) { var states = [,"AK","AZ","AR","CA","CO","CT","DE","DC","FL","GA","HI","ID","IL","IN","IA","KS","KY","LA","ME","MT","NE","NV","NH","NJ","NM","NY","NC","ND","OH","OK","OR","MD","MA","MI","MN","MS","MO","PA","RI","SC","SD","TN","TX","UT","VT","VA","WA","WV","WI","WY" ] var in_array = $.inArray(value.toUpperCase(), states); if (in_array == -1) { return false; }else{ return true; } }, "Please enter a valid US state");
    【解决方案2】:

    您可以使用 change() listener 来简单地根据您的有效输入字符串列表检查输入,并且仅在匹配时启用提交按钮。

    无论如何。为了用户体验,最好显示所有可能状态的下拉选择器列表。至少这是我在阅读您的问题时首先想到的。

    问候,

    克里斯

    【讨论】:

      【解决方案3】:

      这是一个肮脏的快速解决方案:

      http://jsfiddle.net/naveed_ahmad/CqXZu/1/

      【讨论】:

        猜你喜欢
        • 2020-01-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-02-05
        • 1970-01-01
        • 1970-01-01
        • 2017-02-09
        • 2012-09-01
        相关资源
        最近更新 更多