Javascript 使用'this'时,jQuery.val()不起作用`
我有一个Javascript 使用'this'时,jQuery.val()不起作用`,javascript,jquery,Javascript,Jquery,我有一个textarea: <textarea id='ta' onkeydown='down(this)'></textarea> 这个JavaSript来源: <script> function down(input) { alert(input.val()); // not work // but this is work: alert($('#ta').val()); } </script> 功能关闭(输入)
textarea
:
<textarea id='ta' onkeydown='down(this)'></textarea>
这个JavaSript来源:
<script>
function down(input) {
alert(input.val()); // not work
// but this is work: alert($('#ta').val());
}
</script>
功能关闭(输入){
警报(input.val());//不工作
//但这就是工作:警报($('#ta').val());
}
为什么这个来源不起作用
这里是使用
$()
在jQuery包装器中包装输入的因为.val()
是一种jQuery方法
试试这个:-
alert($(input).val());
或
它是这样工作的:
$(document).on('keyup','#ta',function(){
alert($(this).val());
});
函数没有被调用,并且您忘记将$()
添加到此
代码:
$('#ta').keyup(function() {
alert( $(this).val() );
});
.val()
是jQuery的一种方法,因此无论是$(input).val()
还是本地JSinput.value
请在投票否决时留下反馈,答案到底有什么问题?不是我的否决票,而是“函数未被调用”是不正确的。解释可能不正确,但是代码应该工作得很好。此外,我通常建议使用keyup
而不是keydown
,因为后者是在任何文本输入发生之前执行的,因此发出警报的值不会反映输入的当前值。@Terry:虽然这是真的,但很遗憾答案中没有解释。单独使用代码并不是一个好的答案。@Paradoxis:OP确实没有正确设置JSFIDLE。但是,不清楚您是否指的是JSFIDLE演示。此外,由于OP在代码中编写,//但这是工作:alert($('#ta').val())代码>,我们可以得出结论,这只是小提琴的一个问题,函数是在它们的实际代码中调用的(这就是我们应该关注的)。为什么这个答案被否决了?这是完全合法的+1.
$('#ta').keyup(function() {
alert( $(this).val() );
});