使用“ajax [selector]”的jQuery验证引擎

时间:2014-01-27 20:47:06

标签: jquery-validation-engine

我有以下(多步表单)HTML:

<form id="myform">
  <fieldset id="first_step">        
      <input type="text" name="register" placeholder="Αρ. Μητρώου" id="register" class="validate[required,custom[integer]]" />
      <input type="text" name="email" placeholder="Πόλη" id="city" class="validate[required,ajax[email]]" />
      <input type="button" name="next" class="next action-button" value="Επόμενο" id="next1" />
  </fieldset>

  <fieldset id="second_step">
      ....
      ....
      ....
  </fieldset>
</form>

实例化js代码加逻辑(myform.js)

$(document).ready(function(){

    var first_step = $("#first_step");
    var second_step = $("#second_step");

    $("#myform").validationEngine('attach', {
        promptPosition : "centerRight", 
        scroll: false
    });

    $("#next1").on('click', function (e) {
        e.preventDefault();
        var valid = $("#myform").validationEngine('validate');          

        if (valid == true) {
            second_step.show(); 
        } else {
            $("#ithemiscustomerform").validationEngine();
        }
    });

});

规则“validationEngine-el.js”

(function($){
    $.fn.validationEngineLanguage = function(){
    };
    $.validationEngineLanguage = {
        newLang: function(){
            $.validationEngineLanguage.allRules = {
                "required": { // Add your regex rules here, you can take telephone as an example
                    "regex": "none",
                    "alertText": "* Υποχρεωτικό πεδίο",
                    "alertTextCheckboxMultiple": "* Παρακαλώ επιλέξτε",
                    "alertTextCheckboxe": "* Υποχρεωτικό πεδίο",
                    "alertTextDateRange": "* Και τα δύο πεδία ημ/νίας είναι υποχρεωτικά"
                },


                // --- CUSTOM RULES -- Those are specific to the demos, they can be removed or changed to your likings
                "email": {
                    "url": "http://localhost/userformServer/validator.cfc?method=valEmail",
                    // you may want to pass extra data on the ajax call
                    //"extraData": "name=eric",
                    "alertText": "* Μη έγκυρο email",
                    "alertTextLoad": "* Παρακαλώ περιμένετε...",
                    "alertTextOk": "* Το eimail είναι διαθέσιμο"
                },

                "integer": {
                    "regex": /^[\-\+]?\d+$/,
                    "alertText": "* Μη έγκυρος ακέραιος"
                }
            };

        }
    };
    $.validationEngineLanguage.newLang();

})(jQuery);

问题

远程验证适用于“模糊”的“电子邮件”字段 - 用户填写表单时。但是,当我单击“next1”按钮移动下一个字段集(“second_step”)时,即使电子邮件字段有效(远程有效),表单也不会移动到下一个字段集(请参阅“myform.js”onclick) 。特别是当我调用“$(”#myform“)。validationEngine('validate');”在click事件中它返回false。我认为这是由于验证的异步性质而发生的。有没有解决方法呢?

0 个答案:

没有答案