我在此网站上使用多种语言,并希望以不同语言显示错误。我想知道是否可以在自定义错误消息中使用变量。
以下是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');
}
});
}
});
}
});
如果不是另一种方式。
答案 0 :(得分: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
}
});
答案 1 :(得分:1)
你不能像.ajax()
一样将.validate()
放在这里......
$('form').validate({
$.ajax({ ... }); // <-- remove this
...
});
根据the jQuery Validate plugin documentation,只有指定的规则,选项和回调函数可以进入.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
}
}
});
});
DEMO :http://jsfiddle.net/PWdke/
动态更改消息(在插件初始化之后)需要the .rules('add')
method。
$(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
}
});
});
答案 2 :(得分: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: ... */
})