jQuery:val()更新得太晚
更新:其他一些代码有问题 我试图获取一些输入文本字段的值。问题是我通过jQuery:val()更新得太晚,jquery,field,Jquery,Field,更新:其他一些代码有问题 我试图获取一些输入文本字段的值。问题是我通过 my_val = $('#MyInput').val(); 没有真正更新 如果我在字段“foo”中写入,然后单击触发脚本的元素,那么我将得到我的_val=undefined 另一方面,如果我在字段'foo'中写入,单击其他地方,然后单击触发脚本的元素,那么我得到我的_val='foo' 看起来Firefox只在blur上更新val。有没有办法得到正确的值?(否,$('#MyInput').blur()不起作用) 编辑:我根
my_val = $('#MyInput').val();
没有真正更新
如果我在字段“foo”中写入,然后单击触发脚本的元素,那么我将得到我的_val=undefined
另一方面,如果我在字段'foo'中写入,单击其他地方,然后单击触发脚本的元素,那么我得到我的_val='foo'
看起来Firefox只在blur上更新val。有没有办法得到正确的值?(否,$('#MyInput').blur()不起作用)
编辑:我根据要求添加更多信息。我目前在Ubuntu9.10上使用Firefox3.5,但在最新的Chrome测试版上也同样如此
最简单的例子是
<p>Bar</p>
<form>
<input type="text" id="input" />
</form>
尝试在输入中写入一些内容,然后在不离开字段的情况下单击段落
EDIT2:没关系,是其他代码干扰了。很抱歉浪费您的时间:-(调用jQuery的
blur
和focus
方法将调用为事件注册的所有事件处理程序,但实际上不会更改焦点
您需要手动聚焦不同的元素,如下所示:
document.getElementById('something').focus();
如果使用jQuery执行此操作,则需要编写[0]
,以便调用DOMfocus
方法,而不是jQueryfocus
方法。例如:
$('input')[0].focus();
每次内容更改时,只需在输入上使用.keyup()
事件处理程序即可更改变量:
var my_val;
$('#MyInput').keyup(function() {
my_val = $(this).val();
});
$('p').click(function() {
alert(my_val);
});
请注意,
.change()
将不起作用,因为它也只在模糊上触发。它对我来说很好…(任何特定的浏览器都会失败?)请提供更多关于这方面的信息(代码)。您的代码运行在哪个事件处理程序中?因此,显然可以单击而不在输入上触发模糊()。在任何情况下,请使用.keyup()正如我的回答,它会更新。我相信focus
和blur
确实会触发这些事件,只要它们不是事件处理程序的一部分。看。实际上,我有一个这样的脚本在工作。嗯……我希望它能工作,但事实并非如此。通过它,我可以模糊字段,或将焦点交给另一个,但无论如何我的值仍然没有定义。:-(@carillonator:See,它明确地说他们没有。我检查了源代码,看它是否在1.4中发生了更改,但我没有看到任何代码可以更改它。@SLaks,我知道你在说什么(不完全理解它在说什么),但我只是尝试了一下,它就像我说的那样工作,将光标放在输入框中并给它焦点:$('some#u link')。单击(function(){$('some#u input').focus()})
1.4,但前几天我在1.3.2中使用了类似的功能。
var my_val;
$('#MyInput').keyup(function() {
my_val = $(this).val();
});
$('p').click(function() {
alert(my_val);
});