jquery验证-自定义规则-依赖项回调

jquery验证-自定义规则-依赖项回调,jquery,jquery-validate,validation,Jquery,Jquery Validate,Validation,我真的不知道为什么我在jquery中的自定义规则不起作用。它所要做的就是在文本中寻找一个子字符串,如果它没有出现,就需要它,如果它出现,就不需要它。我正在使用jquery验证库。我希望它是简单的。。。请帮忙 jQuery.noConflict(); (function($) { $(function() { $("#frmUpdateCC").validate({ errorContainer: "#updateProfileCC", errorPlace

我真的不知道为什么我在jquery中的自定义规则不起作用。它所要做的就是在文本中寻找一个子字符串,如果它没有出现,就需要它,如果它出现,就不需要它。我正在使用jquery验证库。我希望它是简单的。。。请帮忙

jQuery.noConflict();
(function($) {
$(function() {
    $("#frmUpdateCC").validate({
        errorContainer: "#updateProfileCC",
        errorPlacement: function(error, element) {},
        rules: {
            txtCardNo1: {
                required: true,
                creditcard: function() {
                    var str = $('#txtCardNo1').val();
        str = (str.indexOf("xxxxxx"));
        return (str != 6 );
                }
            }
            cboMonth1: "required",
            cboCard1: "required",

        }
    });
});
})(jQuery);

我试过使用!==6, !='6'及其其他变体

我认为您希望将回调函数分配给“required”属性,而不是“creditcard”属性:

required: function() { var str = .... }
当前您已将所需属性硬编码为true。

那么,
str.indexOf(“xxxxxx”)
将返回字符串
str
“xxxxxx”的起始位置

因此,如果
str
包含
'xxxxxx'
,则只有当
'xxxxxx'
从位置6开始时,您的语句才会计算为true。你是想测试str.length吗

否则,为什么不干脆做:

str = (str.indexOf("xxxxxx"));
    return (str === -1 );

你必须这样做

creditcard: function() {
                    var str = $('#txtCardNo1').val();
        str = (str.indexOf("xxxxxx"));
       if (str > -1) {                                                                
                            return true;
                        }
                        else {                                
                            return false;
                        }
                }

我认为规则信用卡只支持像nnn nnn nnn这样的数字格式。因此,我认为您必须根据需要添加另一个规则,我的意思是自定义规则

不,我只需要它来检查信用卡属性,如果那些X不存在。这是必须的。我会试试看。。。基本上,我需要的声明评估为假,如果该声明存在(在第六位或任何位置)。。。。我试过-1,但我会再试一次。那应该行得通。如果找不到字符串,那么indexOf将等于-1…因此str==-1将返回true。如果找到“xxxxxx”,那么indexOf将大于-1,因此str==-1将返回false。非常欢迎您。对不起,我以前没有给你回电话。