更新:其他一些代码出现问题。
我正在尝试获取某些输入文本字段的值。问题是我通过
获得的价值my_val = $('#MyInput').val();
并未真正更新。
如果我在字段'foo'中写入然后单击触发脚本的元素,那么我得到my_val = undefined。
另一方面,如果我在字段'foo'中写字,点击SOMEWHERE ELSE,然后点击触发脚本的元素,那么我得到my_val ='foo'。
看起来Firefox仅在模糊时更新val。有没有办法获得正确的价值? (不,$('#MyInput')。blur()不起作用。)
编辑:我按要求添加更多信息。我目前在Ubuntu 9.10上使用Firefox 3.5,但最新的Chrome测试版也是如此。
最简单的例子是
<p>Bar</p>
<form>
<input type="text" id="input" />
</form>
然后是
的Javascript$('p').click(function() {
my_val = $('#input').val();
alert(my_val);
});
尝试在输入中写一些内容,然后单击该段而不离开该字段。
EDIT2:没关系,这是其他一些干扰的代码。抱歉浪费你的时间: - (
答案 0 :(得分:2)
只需在输入中使用.keyup()
事件处理程序,每次内容更改时都更改变量:
var my_val;
$('#MyInput').keyup(function() {
my_val = $(this).val();
});
$('p').click(function() {
alert(my_val);
});
请注意,.change()
不起作用,因为它只会在模糊时触发。
答案 1 :(得分:0)
调用jQuery的blur
和focus
方法将调用为该事件注册的所有事件处理程序,但实际上不会更改焦点。
您需要手动聚焦其他元素,如下所示:
document.getElementById('something').focus();
如果你使用jQuery执行此操作,则需要编写[0]
以便调用DOM focus
方法,而不是jQuery focus
方法。
例如:
$('input')[0].focus();