0

我在这个网站上使用多种语言,并希望以不同的语言显示错误。我想知道是否可以在自定义错误消息中使用变量。

这是 JavaScript 代码的片段:

$('form').validate({
$.ajax({
    url: 'notification.php',
    dataType: 'json',
    success: function(data) {
        return notification = data;
    }
});
rules: {
    qty: {
        required:   true,
        digits:     true
    }
},
messages: {
    qty: {
        required:   notification['qty_error'],
        digits:     notification['qty_error2']
    }
},
invalidHandler: function () {
    alert(notification['error2']);
},
submitHandler: function(form) {
    $.ajax({
        url:    $('form').attr('action'),
        type:   'post',
        data: $('form').serialize(),
        success: function() {
            $.ajax({
                url: 'notification.php',
                dataType:'json',
                success: function(data) {
                    $('#notification .container').html('<div class="success" style="display: none;">'+ data.confirm1 + '<img src="catalog/view/theme/default/image/close.png" alt="" class="close" /></div>');
                    $('#notification .success').fadeIn('slow');
                }
            });

        }
    });
}
});

如果不是,那么另一种方法是什么。

4

3 回答 3

1

您当前的脚本在语法上不正确,您可以执行类似的操作

var validator = $('form').validate({
    rules: {
        qty: {
            required:   true,
            digits:     true
        }
    },
    messages: {
    },
    invalidHandler: function () {
        alert(notification['error2']);
    },
    submitHandler: function(form) {
        $.ajax({
            url:    $('form').attr('action'),
            type:   'post',
            data: $('form').serialize(),
            success: function() {
                $.ajax({
                    url: 'notification.php',
                    dataType:'json',
                    success: function(data) {
                        $('#notification .container').html('<div class="success" style="display: none;">'+ data.confirm1 + '<img src="catalog/view/theme/default/image/close.png" alt="" class="close" /></div>');
                        $('#notification .success').fadeIn('slow');
                    }
                });

            }
        });
    }
});
$.ajax({
    url: 'notification.php',
    dataType: 'json',
    success: function(data) {
        var notification = {
            qty: {
                required: data['qty_error'],
                    digits: notification['qty_error2']
            }
        };

        validator.settings.messages = notification
    }
});
于 2013-08-22T17:23:45.113 回答
1

你不能像你在这里所做.ajax()的那样放在里面.......validate()

$('form').validate({
    $.ajax({ ... });  // <-- remove this
    ...
});

只有根据jQuery Validate 插件文档指定的规则、选项和回调函数才能进入.validate().

我看到您已经在回调函数中包含了相同的.ajax()代码。submitHandler这是完全正确的,所以只需.ajax()按照上面的说明删除。

$('form').validate({
    // rules, options & callback functions
    ...
    submitHandler: function(form) {
        $.ajax({ ... });  // <-- ajax always belongs here
        return false;
    }
});

至于您最初的问题,的,您可以使用变量代替消息。

$(document).ready(function() {

    var message_1 = "my custom message 1";

    $('#myform').validate({
        rules: {
            field1: {
                required: true
            }
        },
        messages: {
            field1: {
                required: message_1
            }
        }
    });

});

演示:http: //jsfiddle.net/PWdke/

要动态更改消息(在插件初始化后.rules('add'))需要方法.

$(document).ready(function() {

    var message_1 = "my custom message 1",
        message_3 = "my custom message 3";

    $('#myform').validate({
        rules: {
            field1: {
                required: true
            }
        },
        messages: {
            field1: {
                required: message_1
            }
        }
    });

    // programatically over-ride initialized rules/messages below

    $('input[name="field1"]').rules('add', {
        required: true,
        messages: {
            required: message_3
        }
    });

});

演示:http: //jsfiddle.net/PWdke/1/

于 2013-08-22T18:28:37.673 回答
0

语法错误:

$('form').validate({
$.ajax({
    url: 'notification.php',
    dataType: 'json',
    success: function(data) {
        return notification = data;
    }
});

将您的 ajax 与验证分开...

$.ajax({
    url: 'notification.php',
    dataType: 'json',
    success: function(data) {
        return notification = data;
    }
});

$('form').validate({
    /*rules: ... */
})
于 2013-08-22T17:23:46.263 回答