2010-04-08 50 views
3

這真的是越來越給我now.I有一個加載了一個表單,當頁面loads.In我的jQuery 「準備好」功能我追加一個隱藏的這種形式,像這樣:JQuery的添加隱藏的元素,形成編程

$("<input id='thehidden' type='hidden' name='thehidden' value='hiddenval'>").appendTo("#MenuForm") 

當我用螢火蟲檢查表單內容時,我可以看到元素被添加。

["$(\"#MenuForm\").children()"] is [div, input#thehidden hiddenval] 

所有的好,所以我far.When提交此表並再次嘗試讀取elemet,我不能得到新的隱藏VAL我添加的價值。

alert($('#thehidden').val()) 

未定義

任何幫助,將不勝感激

+0

不知道這有什麼關係(它在你的文章中甚至可能是一個錯字),但你需要確保你在元素創建期間正確地關閉標籤:'$(「「)' - 你離開了你的角色砍刀。 – prodigitalson 2010-04-08 15:37:11

+0

@prodigitalson謝謝,但沒有區別 – vanzylv 2010-04-08 15:40:56

+0

也...你是否在$('#thehidden')的返回值上得到了undefined,或者只返回了'$('#thehidden')。val()'? – prodigitalson 2010-04-08 15:50:43

回答

3

當你到底是想讀取#thehidden DIV的價值?當提交按鈕被按下或者頁面在提交後重新加載時?如果您在頁面加載時每次都不創建輸入,則不會出現下一頁加載。

我測試了您的代碼,只是創建輸入並將值讀回警報中,並且對我來說工作正常。 Check it out爲你自​​己。

+0

永遠不會重新創建元素,謝謝。 – vanzylv 2010-04-09 07:49:33

-1

你需要插入輸入元素到DOM,而不僅僅是HTML注入到頁面。當涉及表單字段時,就會有所不同。使用var field = $(document.createElement('input')),然後設置字段的屬性。

+1

但jQuery的appendTo()確實執行DOM插入。使用示例代碼,我能夠成功檢索插入的「input」的值。 – user113716 2010-04-08 16:03:28

2

嘗試

$('#someid').append($('<input></input>').attr('id','hidden1').attr('type','hidden').attr('value','some val')); 
1

您可以創建一個jQuery函數來爲您完成大部分工作。我用這個功能來編程添加隱藏的輸入:

jQuery的功能:

// This must be applied to a form (or an object inside a form). 
jQuery.fn.addHidden = function (name, value) { 
    return this.each(function() { 
     var input = {}; 
     if (Object.prototype.toString.call(value) === '[object Array]') { 
      var r = /\[\]/; 
      // Pass an array as a series of separate hidden fields. 
      for (var i = 0; i < value.length; i++) { 
       input = $("<input>").attr("type", "hidden") 
            .attr("name", name.replace(r, '[' + i + ']')) 
            .val(value[i]); 
       $(this).append($(input)); 
      } 
     } else { 
      input = $("<input>").attr("type", "hidden") 
           .attr("name", name) 
           .val(value); 
      $(this).append($(input)); 
     } 
    }); 
}; 

用法:

對於標準形式的項目或簡單的參數在MVC theHidden as String

$('#myform').addHidden('theHidden', 'jam'); 
=> <input type="hidden" name="theHidden" value="jam"> 

對於MVC ID As List(Of Integer)列表參數:

$('#myform').addHidden('ID', [1,2,5]); 
=> <input type="hidden" name="ID" value="1"> 
    <input type="hidden" name="ID" value="2"> 
    <input type="hidden" name="ID" value="4"> 

對於複雜類型的MVC其中有一個列表屬性model As ComplexType

$('#myform').addHidden('Customer[].CustomerID', [1,2,5]); 
=> <input type="hidden" name="Customer[0].CustomerID" value="1"> 
    <input type="hidden" name="Customer[1].CustomerID" value="2"> 
    <input type="hidden" name="Customer[2].CustomerID" value="5"> 
Class ComplexType 
    Property Customer As List(Of CustomerDetail) 
End Class 
Class CustomerDetail 
    Property CustomerID As Integer 
End Class