Jquery验证,将错误消息放在现有元素中,而不是生成<label>标记

Ray*_*Lin 6 jquery jquery-validate

我使用Jquery验证插件来验证下面的这两个输入元素.当输入无效时,插件将在输入字段后面生成标签标记,例如:<label for="company" style="">Required !</label>

问题:如何将错误消息放在已存在<span class="help-inline">而不是生成新消息<label>

非常感谢您的帮助.

<script type="text/javascript">

 $('#signUpForm').validate({
                            debug: false,
                            rules: {company:"required",username:"required"},
                         messages: {company:"Required !",username:"Required !"}
                          })// End of validate()

</script>


<div class="control-group">
   <label class="control-label" for="company">Company Name</label>
   <div class="controls">
      <input type="text" name="company">
      <label for="company">Required !</label> // -> this line is generated by Plug-In.
      <span class="help-inline">(required)</span>
   </div>
</div>

<div class="control-group">
   <label class="control-label" for="username">User Name</label>
   <div class="controls">
      <input type="text" name="username">
      <span class="help-inline">(required)</span>
   </div>
</div>
Run Code Online (Sandbox Code Playgroud)

Spa*_*rky 15

利用内置选项并让插件创建span元素会更容易.生成的HTML的最终结果将是您要求的.

  • 使用errorElement改变<label><span>.

  • 用于errorClass将默认错误类更改为help-inline

jQuery:

$(document).ready(function () {

    $('#signUpForm').validate({ // initialize the plugin
        errorElement: 'span',
        errorClass: 'help-inline',
        rules: {
            company: "required",
            username: "required"
        },
        messages: {
            company: "Required !",
            username: "Required !"
        }
    });

});
Run Code Online (Sandbox Code Playgroud)

HTML:

<form id="signUpForm">
    <div class="control-group">
        <label class="control-label" for="inputCompanyName">Company Name</label>
        <div class="controls">
            <input name="company" type="text" id="inputCompanyName" placeholder="" />
        </div>
    </div>
    <div class="control-group">
        <label class="control-label" for="inputFirst">User Name</label>
        <div class="controls">
            <input name="username" type="text" id="username" placeholder="" />
        </div>
    </div>
    <input type="submit" />
</form>
Run Code Online (Sandbox Code Playgroud)

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

顺便说一句:你的User Name领域缺少name属性,name="username".为使此插件正常工作,所有输入元素都必须包含唯一name属性.

  • 嗨 Sparky,感谢您的回答,它只是按照我想要的方式工作,演示链接非常棒!! (2认同)