簡體   English   中英

JS創建的表單元素未提交

[英]JS-created form elements not submitting

我有一個帶有“常規”表單元素的表單,然后還有通過單擊javascript按鈕創建的表單元素。 稱呼為:

<script src="incld/addClass.js" language="Javascript" type="text/javascript">  
</script>  
<input type="button" value="Add a Class" onClick="addInput('dynamicInput');" class="add-class-btn">  

但是,當我查看$ _POST輸出時,這些元素尚未提交。

這是JS:

var counter = 1;
var limit = 25;
function addInput(divName){
  if (counter == limit)  {
     alert("You have reached the limit of adding " + counter + " inputs");
  } else {
     var newdiv = document.createElement('div');
     newdiv.innerHTML = "Class " + (counter + 1) + "          <p><label for=\"class_name\">Class Name </label><input type=\"text\" name=\"class[" + (counter + 1) + "][name]\" id=\"class[" + (counter + 1) + "][name]\" class=\"text-fld\" /></p><p><label for=\"class_grade_level\">Grade Level </label><input type=\"text\" name=\"class[" + (counter + 1) + "][grade_level]\" id=\"class[" + (counter + 1) + "][grade_level]\" class=\"text-fld\" /></p><p><label for=\"class_subject\">Subject </label><input type=\"text\" name=\"class[" + (counter + 1) + "][subject]\" id=\"class[" + (counter + 1) + "][subject]\" class=\"text-fld\" /></p>";
     document.getElementById(divName).appendChild(newdiv);
     counter++;
  }
}

編輯:“常規”表單元素與JS創建的元素位於不同的div標簽中。 也許這很重要嗎?

Edit2:完整(經過編輯但很丑陋)的源代碼可以在這里找到: http//pastebin.com/y5QJU4NN

我能夠復制您的代碼並創建無需更改即可提交的表單。 但是,在提交表單之后,在接收方,我采用了類似於以下的POST結構:

<?php
    var_dump($_POST);
?>

array(1) { 
    ["class"]=> array(1) { 
        [2]=> array(3) { 
            ["name"]=> string(5) "test1" 
            ["grade_level"]=> string(5) "test2" 
            ["subject"]=> string(5) "test3" 
        } 
    } 
} 

因此,看起來您上面發布的代碼有效。 檢查以確保您正在處理程序腳本的POST中檢查正確的數組級別。


編輯

看來PHP不喜歡您將數組索引用作字段名稱。 我確定您可以指定一個字段名稱,例如class[] ,PHP將捕獲所有具有class[]字段名稱的傳入字段作為數組,但是我不確定您是否可以指定一個字段名稱,例如class[1][name] 我將您的JS中的字段名稱更改為:

<input type=\"text\" name=\"class-" + (counter + 1) + "-name\" 
    id=\"class[" + (counter + 1) + "][name]\" class=\"text-fld\" />

提交后將其插入POST就好了。 嘗試一下,看看是否可行。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM