首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Javascript onfocus事件

Javascript onfocus事件
EN

Stack Overflow用户
提问于 2010-06-01 19:35:58
回答 3查看 858关注 0票数 0

我有一个文本框,如果输入的值需要使用一些规则表达式进行验证,我需要在用户输入数据时验证该值。哪个事件适合用于此操作?在textbox上使用onfocus事件一些示例将会很有帮助

EN

回答 3

Stack Overflow用户

发布于 2010-06-01 19:49:57

使用onKeypress或onKeyup。初学者通常认为onChange会做您想做的事情,但只有当输入失去焦点时才会触发。OnFocus是无关紧要的--也就是框第一次获得焦点的时候,而不是用户输入的时候。

票数 0
EN

Stack Overflow用户

发布于 2010-06-01 19:50:57

通常,您会在文本输入失去焦点时执行此操作,因此它将使用blur事件。原因是在键入足够数量的字符之前,许多输入都是无效的。当用户仍在输入有效字符串时,提交验证错误可能会让用户非常恼火。例如,在执行电子邮件验证时,输入只有在输入@符号后才有效。请注意,您还需要验证表单提交的时间,以捕捉字段从未获得焦点的情况。

使用jQuery可能如下所示:

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

这里假设有一些HTML,比如

代码语言:javascript
复制
 <input type="text" class="klass" name="myInput" />
 <span class="validation-message" style="display: none;">This is not valid</span>
票数 0
EN

Stack Overflow用户

发布于 2014-05-14 07:38:08

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

代码语言:javascript
复制
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验证字段

代码语言:javascript
复制
document.getElementById(fieldId).onchange= onChangeHandler;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2949370

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档