尝试使用jQuery更改输入的值。然而,似乎工作,当我使用Firebug查看#input的值时,它保持原始值。这是正常的,还是我做错了什么?谢谢
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1" />
<title>Testing</title>
<script src="http://code.jquery.com/jquery-latest.js"></script>
<script>
$(function(){
$("#DoIt").click(function()
{
$('#input').val('final');
console.log($('#input'));
alert($('#input').val());
});
});
</script>
</head>
<body>
<a href="#" id="DoIt">DoIt</a>
<input id="input" type="text" value="original" />
</body>
</html>
答案 0 :(得分:5)
使用.val()
:console.log( $('#input').val() );
$(function(){
$("#DoIt").click(function(){
$('#input').val('final');
console.log($('#input').val()); // the fixed line!
alert($('#input').val());
});
});
修改强>
现在我明白你在看什么:在Firebug中的元素源(inspect元素)里面 好吧,如果你想看到实际发生的变化,你将不得不使用:
$('#input').attr('value','final');
而不是:
$('#input').val('final');
否则更改将由浏览器存储(不用担心),但Firebug不会更新。
in this demo you can see it working:
$("#DoIt").click(function(e){
$('#input').attr('value','final'); // use .attr() to see the change happen in Firebug!
// $('#input').val('final'); // but rather use this
// $('#input').prop('value','final'); // or better THIS one!
console.log( $('#input').val() );
alert( $('#input').val() );
return false;
});