【问题标题】:JQuery Validation Plugin displaying "Please enter a value greater than or equal to 0."jQuery 验证插件显示“请输入大于或等于 0 的值”。
【发布时间】:2014-07-01 11:35:52
【问题描述】:

我对这个问题发疯了,我似乎无法解决它。我正在使用这个插件来验证我网站上的表单:http://jqueryvalidation.org/

这是我的form

<form action="#" method="POST" id="regForm">
        <table>
            <th></th>
            <th>Name</th>
            <th>Email</th>
            <th>Phone</th>
            <? for($i = 1; $i <= $qty; $i++):?>
            <tr><td>Guest <?= $i?></td>
                <td><input type="text" class="name"  name="name<?= $i ?>" required/></td>
                <td><input type="text" class="email" name="email<?= $i?>"/></td>
                <td><input type="text" class="phone" name="phone<?= $i ?>"/></td>
                <input type="hidden" name="course_id" value="<?= the_ID() ?>"/>
                <input type="hidden" name="course_title" value="<?= $course ?>"/>
                <input type="hidden" name="formSend2" value="1" />
                <input type="hidden" name="course_date" value="<?= $date ?>"/>
                <input type="hidden" name="course_location" value="<?= $location ?>"/>
                <input type="hidden" name="course_applicant" value="<?= $user_ID ?>"/>
            </tr>
            <? endfor; ?>
        </table>
        Will you be attending? (Tick for Yes) <input name="attend_box" type="checkbox" value="yes"/><br/> 
        <input type="submit" value="Confirm Registration"/>
        </form>

这是我的script

$("#regForm").validate();
$.validator.addMethod("cRequired", $.validator.methods.required,"Customer name required");
$.validator.addMethod("cMinlength", $.validator.methods.minlength,
$.validator.format("Customer name must have at least {0} characters"));
$.validator.addClassRules("name", { cRequired: true, cMinlength: 2 });

根据上述情况,如果我尝试提交我的表单而不填写名称字段,则会显示“需要客户名称”。这行得通。

如果我只输入一个字符,则会显示“客户名称必须至少包含 2 个字符”。这行得通。

但是,当我在字段中输入 2 个或更多字符时,就会出现问题。我在字段上显示此错误消息,但我不知道为什么。

请输入一个大于或等于 0 的值。

我真的不知道这里发生了什么。

【问题讨论】:

  • 由于 PHP 是在服务器上进行评估的.

标签: javascript jquery forms jquery-validate


【解决方案1】:

您的代码未显示您描述的问题:jsfiddle.net/xQdZv

否则,使用 JavaScript 看到的实际 渲染 HTML 更新您的 OP。


创建与默认方法相同的自定义方法绝对没有合乎逻辑的理由。您可以安全地使用原始版本....

$(document).ready(function () {

    $("#regForm").validate(); // <- initialize plugin

    // create a new compound rule called "name"
    // assign compound rule using 'class="name"'
    $.validator.addClassRules("name", {  
        required: true,  // <- standard rule
        minlength: 2     // <- standard rule
    });

});

这就是addClassRules() 方法的目的;从多个标准规则中创建复合规则,然后将其分配给 class 名称,然后用于在您的字段上声明新的复合规则。

您的自定义消息可以使用这些attributes 内联定义。

对于required

data-msg-required="Customer name required"

对于minlength

data-msg-minlength="Customer name must have at least {0} characters"

呈现的 HTML:

<input type="text" class="name" name="name1" data-msg-required="Customer name required" data-msg-minlength="Customer name must have at least {0} characters" />

您也不需要required 属性,因为您已经在上面的class 复合规则中定义了required

演示:http://jsfiddle.net/86GL5/

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-22
    • 1970-01-01
    • 2015-09-14
    相关资源
    最近更新 更多