代码之家  ›  专栏  ›  技术社区  ›  Sai Avinash

如何在jQuery自定义验证器方法中格式化消息

  •  0
  • Sai Avinash  · 技术社区  · 7 年前

    我正在尝试编写一个自定义方法,如下所示,使用jQuery validate验证信用卡号。

    jQuery.validator.addMethod("ValidateCreditCard", function(value, element, params) {
        var selectedElement = $('input[name="CardType"]');
        var cardType = selectedElement.filter(':checked').val();
        var cardNumber = $("#CardNumber").val();
        if (cardType == "MasterCard" && !value.startsWith(5)) {
            return false;
        }
        if (cardType == "Visa" && !value.startsWith(4)) {
            return false;
        }
        return true;
    }, jQuery.validator.format("Please enter a {0} card number"));
    

    根据to card type单选按钮选择,我想显示相应的消息。 例如,如果用户选择Visa信用卡,则错误消息应为“请为主信用卡同样输入Visa卡号”

    关于如何传递卡片类型值来格式化消息,您有什么想法吗?

    1 回复  |  直到 7 年前
        1
  •  2
  •   Ali Soltani    7 年前

    您可以按以下方式操作:

    HTML

    <form id="CHECKFORM" name="CHECKFORM">
        <div>
            <input type="radio" name="CardType" id="radioVisaCard" value="Visa" />
            <label for="MOBILE">Visa</label>
            <input type="radio" name="CardType" id="radioMasterCard" value="MasterCard" />
            <label for="MOBILE">Master</label>
            <input type="text" class="cardNumber" data-rule-validatecreditcard="true" />    
        </div>    
        <input type="submit" value="submit" />
    </form>
    

    JS公司

    <script>    
        jQuery.validator.addMethod("ValidateCreditCard", function (value, element) {
            var selectedElement = $('input[name="CardType"]');
            var cardType = selectedElement.filter(':checked').val();
            if (cardType == "MasterCard" && !value.startsWith(5)) {
                return false;
            }
            if (cardType == "Visa" && !value.startsWith(4)) {
                return false;
            }
            return true;
        }, function (element) {
            var selectedElement = $('input[name="CardType"]');
            var cardType = selectedElement.filter(':checked').val();
            var startDigit;
            if (cardType == "MasterCard")
                startDigit = 5;
            else if (cardType == "Visa")
                startDigit = 4;
            return 'The field should be start with ' + startDigit + ' digit.'
        });
    
        $("#CHECKFORM").validate({
            rules: {
                url: "ValidateCreditCard",
            }
        });
    </script>