【问题标题】:How to prevent jQuery Validate from overwriting custom error message in predefined label如何防止 jQuery Validate 覆盖预定义标签中的自定义错误消息
【发布时间】:2014-08-22 08:34:50
【问题描述】:

我正在尝试让 jQuery Validate 显示带有我预定义的错误消息的元素。但它所做的是将预定义的消息替换为其默认值。对我来说工作很重要的原因是,从后端应该可以将错误消息翻译成未定义数量的语言。

一个html sn-p

<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();
        }

    }
});

但不知何故,无论我在输入字段下方的错误 div 中填写什么消息,jQuery 都会覆盖它们。

不能选择使用不同的语言文件或内联验证代码。我真的需要显示 HTML 标签中的预定义消息,而不需要 jQuery 覆盖它们。

【问题讨论】:

  • jQuery Validate 插件创建并切换它自己的消息label 元素。它并非旨在切换您自己的标签。通常,您使用插件提供的messages 选项创建自定义消息。为什么不能简单地将 PHP 生成的消息放入 JavaScript 而不是 HTML?
  • 只是因为我不想混淆 JS 和 HTML。 JS 应该在一个外部文件中。
  • 使用内联 HTML 属性设置您的自定义消息然后:stackoverflow.com/a/16681452/594235
  • 哦...!非常好!在文档中没有看到.. 谢谢!!
  • 将其作为答案发布在下面...

标签: jquery jquery-validate multilingual


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 2019-08-18
    • 1970-01-01
    • 1970-01-01
    • 2010-12-16
    • 1970-01-01
    • 2012-04-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多