2 shjniu3000 shjniu3000 于 2016.01.27 16:25 提问

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

页面中有一个文本框

加载该页面时让其获得焦点
$(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个回答

showbo
showbo   Ds   Rxr 2016.01.27 17:25
已采纳

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 感谢 是兼容性问题 加上延时就可以了
2 年多之前 回复
chen956
chen956   2016.01.27 16:32

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

91program
91program   Ds   Rxr 2016.01.27 16:38

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

91program
91program 回复shjniu3000: 如果没有执行,就不是这句的问题。而是失去焦点的处理逻辑问题,也就是说失败焦点时没有调用 checkExist 函数。
2 年多之前 回复
shjniu3000
shjniu3000 好像没有执行,我的想法就是文本框内容如果是空,就一直让这个文本框获得焦点,有没有什么方法
2 年多之前 回复
shjniu3000
shjniu3000 问题好像就出在这句了 加载时肯定执行了,但是离开文本框好像没有执行。
2 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
Jquery实现文本框获取焦点清空内容,失去焦点重新获得内容
$("#search").focus(function cls() {         //捕获触发事件的对象,并设置为以下语句的默认对象          with (event.srcElement)         //如果当前值为默认值,则清空              if (value == defaultValue) value = ""     });     $("#
创建三个输入文本框,当光标离开文本框的时候如果文本框为空,则将文本框背景色设置为红色,如果不为空则为白色。提示:焦点进入控件的事件是onfocus,焦点离开控件的事件是onblur
window.onload = function () {             var txts = document.getElementsByTagName('input');             for (var i = 0; i                 txts[i].onblur = function () {                     if (t
通过js实现得到焦点时文本框清空,失去焦点时又显示默认文字,值发生改变时不再恢复默认文字?
<input type="text" value="我是默认值" onblur="if(this.value==''){this.value='我是默认值'}" onfocus="if(this.value=='我是默认值'){this.value=''}"/>
jquery 获得焦点的时候,焦点时文本框清空,失去焦点时又显示默认文字
$(document).ready(function() {     //each遍历文本框     $(".input").each(function() {         //保存当前文本框的值         var vdefault = this.value;         $(this).focus(function() {             //获得焦点时,如果值
关于输入框得到焦点时文本框清空,失去焦点时又显示默认文字,值发生改变时不再恢复默认文字的两种方法
第一种方法: 第二种方法:                             文本框点击时文字消失,失去焦点时文字出现                                                         function addListener(element,e,fn)    {       if(element.addE
文本框的得到焦点和失去焦点事件处理
两个文本框 一个事用户名 一个是密码 里面有初始内容 得到焦点就把内容清空 失去焦点就判断输入的内容是否大于6 如果大于则作出相应的提示
文本框获取焦点的时候默认值消失,当默认值发生改变时文本框内容为改变后的内容
无标题文档 function ceh(element) { if(element.value=="中文/拼音"){ element.value=""; } element.focus(); } function cef(element) { if(element.value=="")element.value="中文/拼音"; else element.defaultValue=el
实现输入框得到焦点时边框颜色改变失去焦点时输入框变回原来的颜色
实现输入框得到焦点时边框颜色改变失去焦点时输入框变回原来的颜色
文本框特效:获取焦点时自动清除默认文本 失去焦点重新显示默认文字
代码 background-image:url(input.gif); 给文本框设置背景图片 onfocus="if(this.value='输入关键字 ')this.value=''" 获取焦点(即鼠标点击文本框)时自动清除文本框文字内容 onblur="this.value='输入关键字'"/ 失去焦点(即鼠标点击文本框以外的区域)时返回显示文本框默认文字内容 只清除文本时还可以用
jquery实现文本框得到失去焦点
《锋利的jquery一书》中的用jquery实现文本框得到失去焦点的效果,效果如图:                 结构是一个简单的表单,html里用到了fieldset及legend这两个表现来实现半外边框的效果。fieldset里分别放了三个div来放三个表单,名称用了label属性,后面用了input及textarea,代码如下:         个人基本信息