2009-09-19 83 views
1

我想要做的是使用jQuery改变输入文本框的“value =”。最终目标是使用.html()获取表单,以便将所有代码以及输入框中输入的值一起。如何更改输入框的值属性的HTML?

例如,我有这样的:

<span id="example"> 
<input type="text" value="" id="rate" /> 
</span> 

如果用户键入到输入框使用我可以.VAL保存数据,但我想要做的就是抓住HTML,所以我可以重新用值显示输入框。

如果用户在输入中键入“bob”。然后我用:

var test = $('#example').html(); 

变量 '测试' 拥有以下几点:

<input type="text" value="" id="rate" /> 

我要的是:

<input type="text" value="bob" id="rate" /> 

如何实现这一目标?

+0

凤凰有你的答案,你应该看看可用于表单的选择器:http://docs.jquery.com/Selectors – Mottie 2009-09-19 07:15:46

+0

Dupe:http://stackoverflow.com/questions/1388893/jquery-html-in-firefox-uses-innerhtml-ignores-dom-更改 – gnarf 2009-09-19 08:14:58

回答

1

的最终目标是使用html的一个形式(),所以我有所有的代码,与键入到输入框中的值沿着抓住。

你对这个策略失败了。表单值是与HTML属性分开存储的独立数据层。 HTML value属性反映在对象的defaultValue属性中,不属于,value属性。

设置表单控件的值或选中的属性不会更改HTML DOM属性;因此使用innerHTMLhtml()序列化表单将不会为您提供表单值 - 除了在IE中,由于错误。

(也有在IE浏览器其他错误有关与更改后的名称串行化形式只要避免使用序列;从valueval()记住值本身是更可靠。)

+0

我同意这个策略是错误的。我会想出另一种方式,这么简单:) – techguytom 2009-09-19 21:50:19

0

要改变id值的输入元素的值,你可以使用它。

$("#rate").val(newvalue); 

要将该值设置为鲍勃使用

$("#rate").val("bob"); 
+0

虽然我现在意识到您可能在Firefox以外的浏览器(它显示此错误) - 这根本不能解决问题:http://jsbin.com/uniko – gnarf 2009-09-19 08:34:38

0

我检查你的代码,它工作正常。唯一缺少的是输入字段的类型。你可以试试下面的事情

$('#example')[0].innerHTML 

而第二个是

$("#rate")[0].outerHTML 

希望这将有助于。

1

我相信这个问题的副本:SO138893: jQuery html() in firefox (uses .innerHTML) ignores DOM changes。那里的答案应该可以解决你的问题。我不认为这个新问题应该被删除 - 它可能会帮助别人找到另一个问题。

+0

谢谢,我没有'甚至不知道这个问题甚至存在... 对于实际阅读OP的问题... :) – 2009-09-19 09:31:38

+0

我没有意识到这仅限于浏览器问题。另一个问题甚至在我询问之前搜索时没有出现。 – techguytom 2009-09-19 21:51:25

0

如何不保存实际的HTML,但保存属性?

var attr = { 
'value' : $('#rate').val(), 
'type' : $('#rate').attr('type') } 
//later on in the code or something: 
var inp = $('<input />').attr('id', 'rate').attr(attr);