文本框失去焦点后,如果字符串为空重新获得焦点

页面中有一个文本框

加载该页面时让其获得焦点
$(function(){
$("#tmpName").focus();
});

//js函数
function checkExist() {
var tmpName= $("#tmpName").val();
if(tmpName.length == 0){
//这里还需要让文本框获得焦点
$("#tmpName").focus();
}else if(tmpName.length != 0){
//执行业务
}
}

需求:鼠标离开文本框后,执行完checkExist()重新获得焦点
问题:在页面加载时执行 $("#tmpName").focus(); 文本框能获得焦点
但是执行 checkExist() 函数中的 $("#tmpName").focus(); 不能够让文本控件获得焦点
请问这是什么问题,感谢

3个回答

blur事件你绑定了么有?

 $(function(){
$("#tmpName").blur(checkExist).focus();
});


    function checkExist() {
        var tmpName = $.trim($("#tmpName").val());//去空白
        if (tmpName.length == 0) {
            alert('focus')
            //这里还需要让文本框获得焦点
            setTimeout(function () { $("#tmpName").focus(); }, 10);//还不行可以延时focus
        } else if (tmpName.length != 0) {
            //执行业务
        }
    }
shjniu3000
shjniu3000 感谢 是兼容性问题 加上延时就可以了
4 年多之前 回复

在checkExist()里面的$("#tmpName").focus()是否已经确定执行,tmpName.length == 0这个判断条用起作用了吗。我之前有遇到过判断等于0不执行的情况,
希望能帮到你

如果确认 $("#tmpName").focus(); 已经执行,但还是没有,可以看看 focus(); 函数是否执行成功。

91program
91program 回复shjniu3000: 如果没有执行,就不是这句的问题。而是失去焦点的处理逻辑问题,也就是说失败焦点时没有调用 checkExist 函数。
4 年多之前 回复
shjniu3000
shjniu3000 好像没有执行,我的想法就是文本框内容如果是空,就一直让这个文本框获得焦点,有没有什么方法
4 年多之前 回复
shjniu3000
shjniu3000 问题好像就出在这句了 加载时肯定执行了,但是离开文本框好像没有执行。
4 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐