2012-10-17 46 views
0

我有一个表单,其中有多个由PHP分配的默认值的输入块,我想将其中一个块的HTML标记传递给PHP脚本。这里是我的形式的修改的摘录举例说明标记:在提交时将HTML复制到textarea

<form action="/page/do_work/job_number" id="work_form"> 
    <textarea style="display: none;" name="markup" id="markup"></textarea> 
    <div id="block_1"> 
     <table> 
      <tr> 
       <td><input type="text" value="123" /></td> 
       <td><input type="text" value="123" /></td> 
      </tr> 
     </table> 
    </div> 
    <div id="block_2"> 
     <table> 
      <tr> 
       <td><input type="text" value="abc" /></td> 
       <td><input type="text" value="abc" /></td> 
      </tr> 
     </table> 
    </div> 
</form> 

我听,提交一些jQuery的形式,这样我可以表的HTML复制到textarea的:

$('#work_form').submit(function(){ 
    // Snatch the markup 
    var markup = $('#block_1', '#work_form').html(); 
    // Place it into the textarea 
    $('#markup', '#work_form').html(markup); 
    // Move on 
    return true; 
}); 

问题是修改后的值没有被复制到textarea中。例如,如果我要将值从“abc”更改为“xyz”,则传递给textarea的标记仍然会显示“abc”。任何帮助将不胜感激。

编辑:使用.html().val()都添加标记到textarea的,但我想知道为什么的输入值的更改不会在被插入到textarea的标记体现。进一步检查后,更改输入字段的值,然后在Firebug中检查它们会显示默认值。我需要以某种方式更新DOM吗?

编辑2:markup变量正在设置,但我对输入字段所做的更改未反映在插入到textarea中的标记中。

+0

检查此链接了:HTTP://计算器/我的问题/ 7601851/reading-innerhtml-html-form-with-value-attribute-its-value-of-input-tags – PherricOxide

回答

1

对输入字段的更改不会更改DOM,这正是我应该做的。要改变DOM,我编辑了.submit()功能看起来像这样:

$('#work_form').submit(function(){ 
    // Update the DOM 
    var block_1 = $('#block_1', '#work_form'); 
    block_1.find('input').each(function(i,e){ 
     el = $(e); 
     el.attr('value', el.val()); 
    }); 
    // Snatch the markup 
    var markup = block_1.html(); 
    // Place it into the textarea 
    $('#markup', '#work_form').html(markup); 
    // Move on 
    return true; 
}); 

感谢@PherricOxide指着我这样一个问题:

reading innerHTML of HTML form with VALUE attribute (& its value) of INPUT tags

1

尝试,

$('#markup', '#work_form').val(markup); 

中的console.log(标记)又抛出以确保标记变量被设置得到正确的。

+1

我对我的问题进行了编辑。 –

1

悉心为文本区域,你需要改变它的“价值”不是它“的innerHTML”和多数民众的.html做什么。

$('#markup').val(markup) 

试试这个。

+0

我对我的问题进行了编辑。 –

相关问题