0

我一直在尝试在 keyup 上的表单字段旁边使用视觉复选标记或 X 来滚动我自己的表单验证。我遇到的一个问题是,无论是否出错,它都会在 keyup 被触发后产生一个新的跨度。因此,我尝试在每次按键后删除所有元素,以便获得一个带有成功或错误消息的跨度。这目前有效,但我想知道是否有更好的方法来做到这一点:

jQuery('input#firstname').keyup(function () {

    var text = jQuery(this).val();

    if (check_text(text) === false || text === '') {
        $(this).nextAll().remove();
        jQuery(this).after('<span class="form-error">Error</span>');
    } else {
        $(this).nextAll().remove();
        jQuery(this).after('<span class="form-success">Success</span>');
    }
});

/* Functions */

function check_text(text) {
    var regex = /^[a-zA-Z0-9- ]*$/;
    return regex.test(text);
}

工作示例:http: //jsfiddle.net/XBaKQ/1/

4

1 回答 1

0

我建议您在每个旁边添加跨度input

<input id="firstname" /><span class='msg'></span> <br>
<input id="lastname" /><span class='msg'></span>

在你的脚本集消息中是这样的:

      if (check_text(text) === false || text === '') {
        jQuery(this).next(".msg").html('<span class="form-error">Error</span>');
       } else {      
         jQuery(this).next(".msg").html('<span class="form-success">Success</span>');
      }

jsFiddle

于 2013-03-26T21:27:05.983 回答