使用JQuery.Validator AddMethod验证股票代码

时间:2015-12-19 03:56:14

标签: jquery jquery-validate

我是编码的新手,我不确定我在这里做错了什么,但我只是在一个表格中对一些股票符号验证输入。当我提交一个不在数组中的符号时,我没有收到错误消息。我的代码如下。

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.js"></script>
<script src="http://ajax.aspnetcdn.com/ajax/jquery.validate/1.14.0/jquery.validate.js"></script>

<script>
jQuery.validator.addMethod("vsymbol", function(value) 
{
    var symbols = ["GOOG", "AAPL", "MSFT", "DIS"];
        var in_array = $.inArray(value.toUpperCase(), symbols);
        if (in_array == -1) 
    {
        return false;
        }
    else
    {
        return true;
        }
}, "Not a valid stock symbol");

$("#myform").validate(
{
  rules: {
    symbol: {
      required: true,
      symbol: true
        }
         }
}   
);
</script>

<body>
<form id="myform" >
<label for="symbol">Ticker</label>    
<input name="symbol" type="text" class="vsymbol" />
</form>
</body>

2 个答案:

答案 0 :(得分:1)

请将您的代码包装在$(document).ready(function(){})中以便在dom加载后初始化此函数

答案 1 :(得分:0)

您已经创建了一个名为vsymbol的新规则。但是,当您使用它时,您将其拼错为symbol。您必须正确引用才能使用它......

$("#myform").validate({
    rules: {
        symbol: { // <- name of the field
            required: true,
            vsymbol: true // <- name of the rule
        }
    }
});

如果您已经通过上面的rules对象分配了规则,则在字段class内再次分配规则是完全多余的。只需使用其中一个。

<input name="symbol" type="text" class="vsymbol" />

此外,由于您的表单的HTML标记位于JavaScript之后,因此您的jQuery需要包装在DOM ready事件处理程序中。

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.js"></script>
<script src="http://ajax.aspnetcdn.com/ajax/jquery.validate/1.14.0/jquery.validate.js"></script>

<script>
    $(document).ready(function() {  // DOM ready event handler

        jQuery.validator.addMethod("vsymbol", function(value) {
            var symbols = ["GOOG", "AAPL", "MSFT", "DIS"];
            var in_array = $.inArray(value.toUpperCase(), symbols);
            return (in_array == -1) ? false : true;
        }, "Not a valid stock symbol");

        $("#myform").validate({
            rules: {
                symbol: { // <- name of the field
                    required: true,
                    vsymbol: true // <- name of the rule
                }
            }
        });

    });
</script>

您可能希望阅读有关use of Allman coding style within JavaScript

的内容