如何使用jQuery在字段旁边添加验证错误消息

时间:2013-08-15 23:08:40

标签: javascript jquery

你有一个包含几个字段的表单。其中包括:

<div>
    <label for="phoneNumber" class="label">Phone Number</label>
    <input name="phoneNumber" type="text" id="phoneNumber" size="13"  style="float:left;margin-right:10px;">
</div>
<div>
    <input type="checkbox" name="activePN" id="activePN" checked >
    <label for="activePN">Active</label>
</div>

当表单被提交时,我想验证输入并在每个字段旁边写入,以确定哪个字段没有验证。像这样:

$('#submit').click(function () {
    var proceed = true;
    var strippedPN = $('#phoneNumber').val().replace(/[^\d\.]/g, '').toString(); //strips non-digits from the string
    if (strippedPN.length !== 10) {
        $('#phoneNumber').text('<p>Phone number has to be 10 digits long.</p>')
        proceed = false;
    }
...
...
...
});

我正在跳跃,添加那些<p> </p>标签就可以了。但他们不...... 注意:我还尝试使用html()代替text()activePN代替phoneNumber

3 个答案:

答案 0 :(得分:13)

使用.after()

$('#phoneNumber').after('<p>Phone number has to be 10 digits long.</p>')

将类添加到p标记可能也是明智之举,因此您可以在编辑数字时将其删除。

答案 1 :(得分:2)

尝试:

$('#submit').click(function(){
  var proceed = true;
  var strippedPN = $('#phoneNumber').val().replace(/[^\d\.]/g, ''); //strips non-digits from the string - already a String
  if(strippedPN.length !== 10){
    $('#phoneNumber').after('<p>Phone number has to be 10 digits long.</p>')
     proceed = false;
  }
}

答案 2 :(得分:0)

最好使用jqueryvalidation插件。

但是在某些情况下,您可能需要使用自定义代码显示验证消息,那么下面的内容可能会有所帮助。

代码

var errorSeen = false;

$('#txtname').keyup(function (e) {

var validInput = false; // TODO set your validation here

if (!validInput) {

  var errorMessageVisible = $(".validationMessage").is(":visible");

  if (errorSeen === false && errorMessageVisible === false) {

      $('#txtname').style.borderColor = "red";

        $('#txtname').after("<span class='validationMessage' style='color:red;'>
                            Name is required.</span>");

        errorSeen = true;
    }


  }
   else {

   $('#txtname').style.borderColor = "";

     var errorMessageVisible = $(".validationMessage").is(":visible");

     if (errorMessageVisible)
        $(".validationMessage").remove();

        errorSeen = false;
  }

});