我试图让jQuery Validate显示一个带有我预定义错误消息的元素。但它的作用是它用它的默认值替换预定义的消息。这对我来说很重要的原因是,从后端开始,应该可以用不确定数量的语言翻译错误信息。
一个html代码段
<select name="brand[]" id="brand_select" class="full-width" min="1">
<option value="0"><?php echo __r('Brand','order')?> *</option>
<?php foreach ($brands as $id => $brand): ?>
<option value="<?php echo $brand->id?>" <?php echo select(__val($form_data,'brand',$n),$brand->id)?>><?php echo $brand->brand?></option>
<?php endforeach; ?>
</select>
<label class="error" id="brand_select-error" for="brand_select"><?php echo __r('This field is required!!','validation')?></label>
<?php if ($bodytypes): ?>
<select name="bodytype[]" class="full-width" min="1">
<option value="0"><?php echo __r('Body type','order')?> *</option>
<?php foreach ($bodytypes as $id => $bodytype): ?>
<option value="<?php $bodytype->id?>" <?php echo select(__val($form_data,'bodytype',$n),$bodytype->id)?>><?php echo $bodytype->body_type?></option>
<?php endforeach; ?>
</select>
<label class="error"><?php echo __r('This field is required','validation')?></label>
<?php endif; ?>
<input class="full-width" type="text" name="first_regdate[]" placeholder="<?php echo __r('First registration date','order')?> *" value="<?php echo __val($form_data,'first_regdate',0)?>" required/>
<label class="error"><?php echo __r('This field is required','validation')?></label>
jQuery
$('#order_form_step_1').validate({
errorElement: "label",
errorPlacement: function(error,element) {
return true;
},
invalidHandler: function(event, validator) {
// 'this' refers to the form
var errors = validator.numberOfInvalids();
if (errors) {
$("div.error").show();
} else {
$("div.error").hide();
}
}
});
但不知何故,无论我在输入字段下面的error-div中填写什么消息,jQuery都会覆盖它们。
不能选择使用不同的语言文件或内联构建验证代码。我真的需要显示HTML标签内的预定义消息,而不需要jQuery覆盖它们。
答案 0 :(得分:1)
我建议您将生成自定义消息的PHP放入内联属性...
<input data-msg-required="<?php echo __r('This field is required','validation')?>" ...
这样,jQuery Validate插件仍然可以正常处理消息。