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