2010-08-18 40 views
0

這就是我想要做的。有一個包含所有數據的主窗體,並有幾個對話框,數據將被添加到主窗體中。爲什麼我的變量在帖子中爲空?

當所有數據都在主窗體中後,我將提交表單。但問題是,當我將html複製到主窗體時,它不會保存對話框中的數據值。它不會將這些值放入後置字符串中,後置字符串將顯示名稱但包含空值。

這是我的html:

<div class="form"> 
<form method="post" enctype="multipart/form-data" action="/admin/home/create/" class="niceform"> 
    <fieldset> 
     <dl> 
      <dt><label>Name:</label></dt> 
      <dd><input class="NFText" name="name" id="" size="54" type="text"></dd> 
     </dl> 
     <dl> 
      <dt><label>StaffPicks:</label></dt> 
      <dd > 
       <a onClick="openStaffPickDialog()" class="bt_green"><span class="bt_green_lft"></span><strong>Manage Staffpicks</strong><span class="bt_green_r"></span></a></dd> 
     </dl> 
     <dl> 
      <dt><label>Reviews:</label></dt> 
      <dd><a onClick="openReviewDialog()" class="bt_green"><span class="bt_green_lft"></span><strong>Manage Reviews</strong><span class="bt_green_r"></span></a></dd> 
     </dl> 
     <dl> 
      <dt><label>Carousel(Add Slide to Carousel):</label></dt> 
      <dd><a onClick="openCarouselDialog()" class="bt_green"><span class="bt_green_lft"></span><strong>Add Carousel</strong><span class="bt_green_r"></span></a></dd> 
     </dl> 
     <dl> 
      <dt><label>Theme:</label></dt> 
      <dd><input class="NFText" name="theme" id="" size="54" type="text"></dd> 
     </dl> 
     <div id="appendform"></div> 

     <input type="hidden" id="slidecount" name="slidecount" value="1"/> 

     <dl class="submit"> 
      <img class="NFButtonLeft" src="/admin/img/0.png"><input type="submit" value="Save" id="submit" name="submit" class="NFButton"><img src="/admin/img/0.png" class="NFButtonRight"> 
     </dl> 

</fieldset> 
<div id="hiddeninform" style="visibility:hidden; height:1px;"></div> 
</form> 
</div> 
<div style="visibility:hidden; height:1px;"> 
    <div id="carouseldialog"> 
     <form id="carouselform"> 
      <div id="carouselslides"> 
       <div id="slide1"><label>LinkURL:</label><input name="linkurl1" type="text" /><br/> 
       <label>Upload Image</label><input name="slideimage1" type="file" /><br/></div> 
      </div> 
      <a onClick="addSlide()" class="bt_green"><span class="bt_green_lft"></span><strong>Add Slide</strong><span class="bt_green_r"></span></a> 
      <a onClick="removeSlide()" class="bt_red"><span class="bt_red_lft"></span><strong>Remove Slide</strong><span class="bt_red_r"></span></a> 
     </form> 
    </div> 


    <div id="carouselslide"> 
     <div id="slidenonumber"> 
      <br/> 
      <label>LinkURL:</label><input name="linkurl" id="linkurl" type="text" /><br/> 
      <label>Upload Image</label><input name="slideimage" id="slideimage" type="file" /><br/> 
     </div> 
    </div> 
    <div id="staffpickdialog"> 
     <div id="staffpicksaddto"> 
       <select id="staffpicks" name="staffpicks" size="1"> 
        {% for program in programs %} 
        <option value="{{program.key.name}}">{{program.name}}</option> 
        {% endfor %} 
       </select> 
      </div> 
      <a onClick="addStaffpick()" class="bt_green"><span class="bt_green_lft"></span><strong>Add Staffpick</strong><span class="bt_green_r"></span></a></dd> 
      <a onClick="removeStaffPick()" class="bt_red"><span class="bt_red_lft"></span><strong>Remove Staffpick</strong><span class="bt_red_r"></span></a> 

    </div> 
    <div id="staffpickhidden"> 
       <br/> 
       <select id="staffpicks" name="staffpicks" > 
        {% for program in programs %} 
        <option value="{{program.key.name}}">{{program.name}}</option> 
        {% endfor %} 
       </select> 
    </div> 

    <div id="reviewdialog"> 
     <div id="reviewsaddto"> 
      <textarea cols="60" rows="5" id="reviews" name="reviews"></textarea> 
     </div> 
      <a onClick="addReview()" class="bt_green"><span class="bt_green_lft"></span><strong>Add Staffpick</strong><span class="bt_green_r"></span></a></dd> 
      <a onClick="removeReview()" class="bt_red"><span class="bt_red_lft"></span><strong>Remove Staffpick</strong><span class="bt_red_r"></span></a> 

    </div> 


    <div id="reviewhidden"> 
     <br/> 
     <textarea cols="60" rows="5" id="reviews" name="reviews"></textarea> 
    </div> 

</div> 

這是我的javascript:

function openReviewDialog(){ 
$('#reviewdialog').dialog({ 
     width: 480, 
     modal: true, 
     buttons: { 
      'Save': function() { 
       $('#hiddeninform').append($('#reviewsaddto').html()) 
       $(this).dialog('close'); 
      }, 
      Cancel: function() { 
       $(this).dialog('close'); 
      } 
     } 
}) 

}

+0

您能否包含相關的Python處理程序代碼? – 2010-08-18 17:37:46

+0

問題已經回答。這是問題,如果你複製HTML它不會複製值。看伊恩的答案。 – 2010-08-18 18:10:21

回答

2

我敢肯定值不過去了,當你在窗體上調用.html輸入元素。嘗試遍歷對話框中的所有元素,並將它們作爲隱藏元素添加到表單中。

$("select, textarea, input", $("#dialog")).each(function (i) { 
    $("#hiddeninform").append($("<input/>").attr("name", $(this).attr("name")).val($(this).val())); 
}); 
+0

啊,我會試一試,雖然你的例子有點難以理解。 (我是Jquery首發)感謝您的快速回答。 這是幹什麼的? .append($(「」).attr(「name」,$(this).attr(「name」)).val($(this).val())); 這會附加一個隱藏的輸入與正確的值? 編輯:它的作品已經令人驚歎XD想給你一杯啤酒。 – 2010-08-18 17:58:53

+0

這會創建一個新的輸入元素,然後將其名稱和值設置爲循環中當前對話元素的名稱和值。然後它將新輸入附加到#hiddeninform。 – 2010-08-18 18:06:57

+0

其實這個效果更好。因爲你的方式將無法保存文件輸入。 append($(this)); – 2010-08-24 16:49:13

0

最好的辦法就是這樣。如果您使用文件字段或其他特殊類型的字段,使用上述答案會使您陷入麻煩。但爲他的解決方案信貸給他!

function openCarouselDialog(){ 
    $('#carouseldialog').dialog({ 
      width: 450, 
      modal: true, 
      buttons: { 
       'Save': function() { 
        $("#carouseldialog input[type=text]").each(function (i) { 
         $("#hiddeninform").append($(this)); 
        }); 
        $("#carouseldialog input[type=file]").each(function (i) { 
         $("#hiddeninform").append($(this)); 
        }); 
        $(this).dialog('close'); 
       }, 
       Cancel: function() { 
        $(this).dialog('close'); 
       } 
      } 
    }) 
}