Javascript onfocus事件

时间:2010-06-01 11:35:58

标签: javascript-events

我有文本框,如果输入的值需要使用一些regularrexpression进行验证 我需要在用户输入数据时验证值。 哪个适合的事件可以用于此?在文本框上使用onfocus事件的一些示例示例将很有帮助

3 个答案:

答案 0 :(得分:0)

使用onKeypress或onKeyup。 初学者通常认为onChange会做你想要的,但只有当输入失去焦点时才会触发。 OnFocus是无关紧要的 - 即当盒子首先获得焦点时,而不是当用户键入时。

答案 1 :(得分:0)

通常,当文本输入失去焦点时,您会这样做,因此它将使用模糊事件。原因是在输入足够数量的字符之前,许多输入无效。当用户仍在键入有效字符串时,提出验证错误可能会非常烦人。例如,在进行电子邮件验证时,输入在输入@符号之前无效。请注意,您还需要验证提交表单的时间,以捕获字段从未有过焦点的情况。

使用jQuery可能看起来像:

 $('.klass').blur( function() {
     if (!$(this).val().match( /your-regular-expression/ )) {
         $(this).next('.validation-message').show();
         return false;  // keep focus on field
     }
     return true;
 });

这假设某些HTML

 <input type="text" class="klass" name="myInput" />
 <span class="validation-message" style="display: none;">This is not valid</span>

答案 2 :(得分:0)

要阻止用户编写无效字符,或者在键入时验证字段,可以使用.onkeypress

document.getElementById(fieldId).onkeypress = onkeypressHandler;

var onkeypressHandler = function (event) {
    var eKey = event.charCode;
    var str = String.fromCharCode(eKey);
    var pattern = /[^0-9]/g;
    var strTmp = str.replace(pattern, "");
    if (str!== strTmp) {
        return false;
    }
    return true;
}

在此示例中,唯一有效的字符是数字,如果按下的键不是数字,则该函数将返回false,并且该键将被忽略。

在用户完成输入后验证字段时,您可以使用.onchange

document.getElementById(fieldId).onchange= onChangeHandler;