改变输入值不会被萤火虫反映出来

时间:2012-05-22 12:23:55

标签: jquery

尝试使用jQuery更改输入的值。然而,似乎工作,当我使用Firebug查看#input的值时,它保持原始值。这是正常的,还是我做错了什么?谢谢

http://jsfiddle.net/tsfSg/

<!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>

1 个答案:

答案 0 :(得分:5)

使用.val()console.log( $('#input').val() );

$(function(){
    $("#DoIt").click(function(){
        $('#input').val('final');
        console.log($('#input').val());  // the fixed line!
        alert($('#input').val());
    });
});

demo


修改

现在我明白你在看什么:在Firebug中的元素源(inspect元素)里面 好吧,如果你想看到实际发生的变化,你将不得不使用:

$('#input').attr('value','final');

而不是:

$('#input').val('final');

否则更改将由浏览器存储(不用担心),但Firebug不会更新。

in this demo you can see it working:

demo

$("#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;
});