0

我对插件 jQueryValidate 有一点问题。

这真的很简单:我只想用这个插件检查我的表单,并在值错误或字段为空时显示一个小工具提示。我为此使用 qTip2,效果很好!

但问题是在表单的某个地方,我有一个动态数量的字段,用户必须在其中输入验证码。我想检查输入的代码是否存在于我正在使用的数据库中,如果不存在,则显示一个小工具提示。

所以,我做到了,但我的问题是如何为这个未定义数量的字段制定“动态”规则,并且只使用一个 PHP 文件来检查代码是否存在于数据库中?

这是我的标准字段表单:

<form method="POST" action="" id="inscription-form" name="inscription-form" enctype="multipart/form-data">
    <p><input type="text" name="v_nom" id="v_nom" class="defaultInvalid" size=30 tabindex="1" value="nom" /><br />
    <input type="text" name="v_prenom" id="v_prenom" class="defaultInvalid" size=30 tabindex="2" value="pr&eacute;nom"/><br />
    <input type="text" name="v_adresse" id="v_adresse" class="defaultInvalid" size=30 tabindex="3" value="adresse"/><br />

[…]

我有一个未定义数量的字段:

<input type="text" class="ticket-field" name="v_ticket_1" id="v_ticket_1" size=30 tabindex="9" value="ticket"/>
<input type="text" class="ticket-field" name="v_ticket_2" id="v_ticket_2" size=30 tabindex="10" value="ticket"/>

[…]

这是我的 JS

myForm.validate({
errorClass: "errormessage",
onkeyup: false,
errorClass: 'error',
validClass: 'valid',

rules: {

    v_nom: { required: true, minlength: 2 },
    v_prenom: { required: true, minlength: 2 },
    […]

    v_ticket_1: {
        remote: "includes/deindeal_check_tickets.php",
        async: false
    }
},
messages: {
    v_nom: { defaultInvalid: v_name_msg },
    v_prenom: { defaultInvalid: v_last_name_msg },
    […]

    v_ticket_1 : { remote: "Coupon invalide"}
},
success: function(error) {

    setTimeout(function() {
       myForm.find('.valid').qtip('destroy');
    }, 1);
},

submitHandler: function(form) {
    form.submit();
},

errorPlacement: function(error, element) {...

等等...

现在,我的 PHP 文件只返回 true 或 false。这只是一个测试。

那么,我怎样才能为“ticket-field”类的所有字段只定义一个规则,并只使用另一个文件来检查值呢?不幸的是,我在任何地方都找不到好的解决方案。欢迎任何建议!

谢谢!;)

4

1 回答 1

0

使用rulesadd方法的功能为你的所有s查找和设置规则。您可以在调用 validate 后执行此操作:ticket-field

myForm.validate({
     //all your options and rules, but exclude anything about v_ticket_1
});

$('.ticket-field').each(function(){
    $(this).rules('add',{
        remote: "includes/deindeal_check_tickets.php",
    });
});
于 2013-03-08T16:21:47.003 回答