2012-06-12 64 views
0

我使用jQuery創建任意多個文本框輸入一個數據庫,用戶需要像這樣:插入JS-創建的輸入文本框的值到

<script type="text/javascript"> 
$(document).ready(function() { 
$('#names').on({ 
    blur: function() { 
     var name = $("<p><input class='input' type='text' /></p>") 
     var nullFields = 0; 
     $(this).closest('div#names').find('input.input').each(function(){ 
      if($(this).val() == ""){ 
       nullFields++; 
      } 
     }); 
     console.log(nullFields); 
     if(nullFields <= 1){ 
     $('#names').append(name.fadeIn(500)); 
     } 
    } 
}, 'input'); 
}); 
</script> 

插入一個文本框靜態到數據庫是沒有問題的使用$_POST['blah']mysql_query("INSERT INTO ..."),但我如何插入動態創建的文本框的值?我知道我將不得不在創建文本框時給出不同的名稱,並且我認爲MySQL查詢將通過某種循環方式進行。

EDIT

有問題的網站是here,具體地在步驟4如上所述,步驟3是相當簡單的。

回答

1

這是一個讓你入門的例子,而不是完整的解決方案。 您創建名稱的數組,然後讓PHP插入每個數組項目

var currentArrayNum = 1;  
$('#someClickable').click(function(){ 

     $('#td').append('<input name="arrayName['+currentArrayNum+']" value="" />'); 
     currentArrayNum += 1; 
    }); 

PHP:

foreach ($_POST as $key){ 
     if (is_array($key)){ 
       foreach ($key as $key2 => $value){ 
       //$key2 will equal arrayName[currentArrayNum] 
       //$value will equal the user input for the text field 
do some stuff 
} 
+1

您可以使用'name []'而不使用任何索引。 – scriptin

+0

非常感謝您的回覆。幾個問題:1.是否有一種方法來測試JavaScript?動態創建的文本框不顯示在源代碼中。 2. PHP究竟在幹什麼?我不太明白$ key在做什麼...... – Sebastian

+0

當您將表單發佈到進入數據庫的PHP頁面時,POST是一個數組。 $ _POST [key] =值。動態創建的文本字段現在是該數組內的數組。該腳本將查找數組(is_array)並將每個值作爲$ key2並賦值$ value。現在你可以在你的foreach循環中訪問它。可能不是你正在做的最好的方式,但我需要看看你想如何寫入數據庫..使用print_r($ _ POST);死();在你的php腳本中查看數組 –

0

您可以創建陣列出來的名字,只是試試這個:

<input type="text" name="post_input[input_1]" value=""> 
<input type="text" name="post_input[input_2]" value=""> 

提交後,您將使用按鍵input_1和input_2及其指定的值從$ _POST [「post_input」]中獲取數組。然後,您只需將它們循環爲普通數組,例如

$aTextFields = $_POST["post_input"]; 
foreach($aTextFields as $sValue) { 
    ... 
}