博主最近在用easyUI框架,使用的IE11浏览器,利用$.dialog.open()创建一个新的窗口时,如果第一次在该窗口中保存了一次,回到主窗口,再次打开新窗口,里面的input标签获取不到鼠标的光标,因此就无法再次进行保存操作,必须刷新之后才行。这个问题困扰了博主好久,有的人说是因为“新窗口没有在body当中,是body的兄弟结点,因此无法点击,获取不了光标”,然而我在调试时发现并不是这样。其他原因也并没有找到,今天问高手时,告诉了我一个解决方案,“你直接利用js,让你的input获得焦点不就行了吗”,好吧,这个确实是一个方法,虽然不知道为什么不能显示,但解决方案出来了也是可以的,对于在工作中急需解决的问题可以这样做。
代码如下:
//yourInputclass是你的input标签的类名
$("input.yourInputclass").get(0).focus();
如果你的input不一定存在的话,可以加上判断:
var temp = $("input.yourInputClass");
if(temp!=null && temp && typeof(temp)!="undefined" && isNaN(temp)){
temp.get(0).focus();
}
PS:对于js中val()和value的区别
val()是在有jQuery插件的时候才能用,value是在没有jQuery插件的情况下也能用。val()是jQuery根据原生JS里面的value写出来的函数
$(this).val(); 有四个重载版本
val() 获得第一个匹配元素的当前值。
val(array) check,select,radio等都能使用为之赋值
val(function(index, value)) 设置每一个匹配元素的值。
val(val) 设置每一个匹配元素的值。
this.value 获取 dom对象的值 如 text radio checkbox select 等。
因此,如果想获得class为"yourInputClass"的input中,第一个input中的值,有两种方式:
var temp = $("input.yourInputClass").get(0);
console.log(temp.value);
console.log($(temp).val());