jQuery - 复制文本字段显示错误的值,“inspect element”(解决方法?)

时间:2012-07-27 20:55:49

标签: jquery

所以我在div内加了一个字段(input[type=text]),然后我创建了这个div内容的副本并将副本显示给用户进行编辑它的价值。当他们更新副本的值时,它会提交更改原始值的副本。

问题是,当我删除副本并再次从隐藏的div创建新副本时,新副本字段中出现的文本是原始文本(加载页面时)而不是新文本更新为。原始字段显示其中的新文本,当我检查元素时,value属性显示旧文本。

换句话说,除了原件中显示的文本和值属性外,一切都是正确的。

所以我想知道我是做错了什么,或者是否有某种解决方法。

这是一个代码示例:

<div style="display:none">
    <input type="text" value="test" />
    <a>Submit</a>
</div>
<button class="get">Get value</button>
<button class="show">Show hidden one</button>
<button class="copy">Copy hidden one</button>​
$('button.copy').click(function(){
    $('<br><span>'+$('div').html()+'</span>').appendTo('body');
});

$('a').live('click',function(){
    $('div input').val($('span input').val());
    $('span').remove();
});

$('button.get').click(function(){
    alert($('div input').val());
});

$('button.show').click(function(){
    $('div').show();
});

​My jsFiddle

1 个答案:

答案 0 :(得分:2)

.val()不会更新value属性,因此当您执行.html()或检查元素时,您会看到原始html而不是值。如果您将上面代码的一行更改为:

$('div input').attr("value", $('span input').val());

它应该像您期望的那样工作。我在尝试使用.data()设置数据属性时使用.data看到类似的问题,然后使用.attr("data-

检索它