为什么JQuery valid()方法总是返回True?
问题描述:
我有一个简单的HTML表单:为什么JQuery valid()方法总是返回True?
<form id="frmNewCategory">
<span>New Category Name:</span>
<input type="text" id="txtNewCategoryName">
<label>Amount:</label>
<input type="text" id="txtNewCategoryAmount">
<br>
<input type="submit" value="Create" class="importantButton button" id="btnNewCategory">
<input type="button" value="Cancel" class="button" id="btnCancelNewCategory">
</form>
而使用位的jQuery驱动的JavaScript的被点击btnNewCategory当火灾validation plugin:
function onNewCategoryClick(event)
{
$("#frmNewCategory").validate(
{
rules:
{
txtNewCategoryName : { required: true },
txtNewCategoryAmount : { required: true, number: true }
},
messages:
{
txtNewCategoryName : { required: "*" },
txtNewCategoryAmount: { required: "*", number: "Invalid Amount." }
}
});
if (!$("#frmNewCategory").valid())
return;
event.preventDefault();
var cmd = cmdFactory.createUndoableNewCategoryCommand($(this));
cmdBus.handleCommand(cmd);
}
以上所述的方法被认为验证frmNewCategory。问题是,即使表单有无效值或没有值,.valid()方法仍然返回True。
任何想法?我究竟做错了什么?
答
规则采取的形式输入 “姓名” 而不是 “IDS”:
<input type="text" name="txtNewCategoryName" />
<input type="text" name="txtNewCategoryAmount" />
答
相反的:
<input type="text" id="txtNewCategoryName">
<input type="text" id="txtNewCategoryAmount">
用途:
<input type="text" name="txtNewCategoryName">
<input type="text" name="txtNewCategoryAmount">
答
这种模式之前,为我工作:
$(".required").filter(function() { return $(this).val() == ""; }).addClass("invalidInput");
if (this.formWrp.valid() && this.formWrp.find(".invalidInput").length == 0)
return true;
这样做后,似乎激活验证。
谢谢!这是一个棘手的问题,因为虽然valid()方法返回true,但调用.validate()。元素(“#selector”)方法将返回false。 – 2012-10-22 18:20:11
在阅读了两篇教程后,我已经浪费了6个小时。我将花时间编写自己的教程,用大词汇来强调这个重要问题。 – Ishmael 2012-12-10 19:59:38