我有一个简单的HTML表单:
<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>
使用点击btnNewCategory时触发的validation plugin的jQuery驱动JavaScript:
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。
有什么想法吗?我做错了什么?
答案 0 :(得分:14)
规则采用输入“名称”而不是“ids”:
<input type="text" name="txtNewCategoryName" />
<input type="text" name="txtNewCategoryAmount" />
答案 1 :(得分:7)
而不是:
<input type="text" id="txtNewCategoryName">
<input type="text" id="txtNewCategoryAmount">
使用:
<input type="text" name="txtNewCategoryName">
<input type="text" name="txtNewCategoryAmount">
答案 2 :(得分:1)
此模式之前适用于我:
$(".required").filter(function () { return $(this).val() == ""; }).addClass("invalidInput");
if (this.formWrp.valid() && this.formWrp.find(".invalidInput").length == 0)
return true;
执行此操作后,似乎验证已激活。