如何防止jQuery通过覆盖预定义标签中的自定义错误消息进行验证

时间:2014-08-22 08:34:50

标签: jquery jquery-validate multilingual

我试图让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覆盖它们。

1 个答案:

答案 0 :(得分:1)

我建议您将生成自定义消息的PHP放入内联属性...

<input data-msg-required="<?php echo __r('This field is required','validation')?>" ...

这样,jQuery Validate插件仍然可以正常处理消息。