jquery
  • jquery-validate
  • 2016-10-04 65 views 0 likes 
    0

    有人可以向我解释为什么这不是我的帮手功能?不知道这是一个语法的事情还是什么..jQuery验证自定义方法不能正常工作

    jQuery.validator.addMethod("expDateExistInPast", function (value) { 
        return customFunction(value); 
    }, "Expiration cannot exist in past."); 
    
    $("form[name='myForm']").validate({ 
    rules: { 
        exp: {expDateExistInPast: true} 
    }, 
    messages: { 
        exp: { 
         required: "message", 
         expDateExistInPast: "otherMsg" 
        } 
    }, 
        submitHandler: function (form) { 
         form.submit(); 
        } 
    }) 
    
    
    function customFunction(value) { 
        alert("magic here"); 
    } 
    

    UPDATE - 添加HTML

    <input class="myClass" type="text" name="expiration" id="exp" maxlength="4" pattern="^(0[1-9]|1[0-2])[0-9][0-9]$" required="" placeholder="MMYY" aria-required="true" aria-invalid="true"> 
    
    +0

    你需要向我们展示了相关的HTML,因为你的OP中的一切对我来说都工作得很好:http://jsfiddle.net/se4dc18h/ – Sparky

    +0

    在上面添加了HTML。只是关于此的一些信息,我期待用户的MMYY日期值。因此,正则表达式。 –

    回答

    0

    input包含name="expiration" ...

    <input class="myClass" type="text" name="expiration" id="exp" maxlength="4" pattern="^(0[1-9]|1[0-2])[0-9][0-9]$" required="" placeholder="MMYY" aria-required="true" aria-invalid="true"> 
    

    然而,问题是您的.validate()方法在rules对象内使用exp ...

    rules: { 
        exp: { 
         expDateExistInPast: true 
        } 
    }, 
    

    必须只使用这里的name属性...

    rules: { 
        expiration: { // <- this is the NAME of the input 
         expDateExistInPast: true 
        } 
    }, 
    

    工作:jsfiddle.net/se4dc18h/

    +0

    你是先生,是一名奇迹工作者。谢谢。这解决了我的问题。 –

    相关问题