2012-08-25 11 views
2

对于已输入的innerHTML和输入值有一个简短的问题。请参阅下面的简单例子(使用jQuery为了方便):带输入值的内部HTML

http://jsfiddle.net/F7urT/2/

的jQuery:

jQuery(document).ready(function($) { 
    $('.send').click(function() { 
     alert($('.content').html()); 
     return false; 
    }); 
});​ 

HTML:

<div class="content"> 
    <input type="text" name="input" value="Old Value" /> 
    <input type="button" class="send" value="Send" /> 
</div>​ 

如果编辑的输入值,然后点击“发送”按钮,该警报显示innerHTML已获得联系将输入与“旧值”相比较,而不是用户输入的值。为什么是这样?我们怎样才能得到HTML作为一个字符串与用户输入的输入值?

回答

4

,可以通过inputelement.value来获得的值,修改所述值不影响该属性。如果您希望具有新值的html只将该属性设置为新值。

对于设定选中属性复选框,单选按钮,设置innerHTML的文本区域,选择设置所选属性的选项

http://jsfiddle.net/mowglisanu/F7urT/5/

+0

谢谢,简单,但由于某种原因没有发生在我身上。其他类型的表单域呢?选择框,textareas等?问题应该提到这个而不是严格的输入;我很抱歉。 –

+0

@MatthewRuddy查看更新 – Musa

+0

谢谢。非常简单,真的应该自己处理这件事。固执导致我浪费时间试图找出InnerHTML正在发生的事情,而不是实现一个简单的解决方案。再次感谢。相信它实际上获得了当前的HTML,包括任何已更改的输入值等,而不是逐字读取源代码。 –

3

你不能得到.innerHTML.html())。写入元素不会修改html标记,也不会更改实际标记中的value属性。

您只能通过直接询问元素的.value-值来访问当前内容。使用jQuery,你也可以通过.val()来做到这一点。

1

$('#input_id').attr('value',$('#input_id').val());
将把值到新的值被存储为属性不是一个属性的HTML

2

这个解决方案是更好的。为更多的投入而工作。

$('input[type=text]').attr('value', function (i, val) { return val; }); 
    $('input[type=checkbox],input[type=radio]').attr('checked', function() { return this.checked; }); 
    $('textarea').html(function() { return this.value; }); 
    $('select').find(':selected').attr('selected', 'selected');