给定这个 html 输入元素,<input id="input1" type="text" />
如果用户输入“test”的值,jQuery 是否可以将其序列化为字符串?
我要寻找的输出是, <input id="input1" type="text" value="test" />
我没有将它复制到 DOM 中的另一个元素,我需要实际的字符串,以便我可以将它发送到 EVOPdf。我已经尝试过 clone(true),但它没有给我用户在输入中输入的任何值。
我不得不解析 html() 字符串并为每个输入插入一个值,除非有人知道更好的方法。
我的测试表明,属性值与value值无关- 至少在我使用 Safari 5.1 和 FF 6 进行的测试中是这样。
因此,如果我修改文本字段的内容(我输入 ueoau)并选择它
> var text = $('input[type=text]').first()
Run Code Online (Sandbox Code Playgroud)
并使用它的值.val()
> text.val()
"ueoau"
Run Code Online (Sandbox Code Playgroud)
但获取它的标记会将值呈现为空(此片段来自詹姆斯的回答)
> $('<div>').append(text.clone()).remove().html()
"<input autocomplete="off" name="q" class="textbox" placeholder="search" tabindex="1" type="text" maxlength="140" size="28" value="" style="width: 200px; max-width: 200px; ">"
Run Code Online (Sandbox Code Playgroud)
获取属性值也不起作用(getAttribute这里使用 DOM 来避免 jQuery 的魔力attr())
> text[0].getAttribute('value')
""
Run Code Online (Sandbox Code Playgroud)
再次强调,属性值与值值不同。因此,您可以使用的一种解决方法是将其属性设置为其值
> text[0].setAttribute('value', text.val())
> $('<div>').append(text.clone()).remove().html()
"<input autocomplete="off" name="q" class="textbox" placeholder="search" tabindex="1" type="text" maxlength="140" size="28" value="ueoau" style="width: 200px; max-width: 200px; ">"
Run Code Online (Sandbox Code Playgroud)
这对我有用。我想我对此的解释是属性值仅代表字段的初始值,并且之后不与其真实值同步。