为什么 JQuery valid() 方法总是返回 True?

发布于 2024-09-17 08:03:07 字数 1415 浏览 3 评论 0原文

我有一个简单的 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>

以及一些 jQuery 驱动的 JavaScript,使用 验证插件单击 btnNewCategory 时触发:

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。

有什么想法吗?我做错了什么?

I have a simple HTML form:

<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>

And a bit of jQuery-driven JavaScript using the validation plugin that fires when btnNewCategory is clicked:

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);  
}

The method above is supposed to validate frmNewCategory. Trouble is that even if the form has invalid values or no values at all the .valid() method still returns True.

Any ideas? What am I doing wrong?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

瑾夏年华 2024-09-24 08:03:15

这种模式以前对我有用:

$(".required").filter(function () { return $(this).val() == ""; }).addClass("invalidInput");

if (this.formWrp.valid() && this.formWrp.find(".invalidInput").length == 0) 
     return true;

这样做后,似乎验证已被激活。

This pattern worked for me before:

$(".required").filter(function () { return $(this).val() == ""; }).addClass("invalidInput");

if (this.formWrp.valid() && this.formWrp.find(".invalidInput").length == 0) 
     return true;

After doing so, it seems that validation is activated.

月亮邮递员 2024-09-24 08:03:14

代替:

<input type="text" id="txtNewCategoryName">
<input type="text" id="txtNewCategoryAmount">

使用:

<input type="text" name="txtNewCategoryName">
<input type="text" name="txtNewCategoryAmount">

Instead of:

<input type="text" id="txtNewCategoryName">
<input type="text" id="txtNewCategoryAmount">

Use:

<input type="text" name="txtNewCategoryName">
<input type="text" name="txtNewCategoryAmount">
空袭的梦i 2024-09-24 08:03:12

规则采用输入“names”而不是“ids”的形式:

      <input type="text" name="txtNewCategoryName" />
      <input type="text" name="txtNewCategoryAmount" />

The rules take form input "names" not "ids":

      <input type="text" name="txtNewCategoryName" />
      <input type="text" name="txtNewCategoryAmount" />
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文