2013-12-14 21 views
0

我有一個«newInput»按鈕,它在JavaScript中動態添加一個新的輸入,當我點擊它。動態JavaScript時使用加載 - >查看

當我在窗體中出現錯誤時,我使用窗體重新加載視圖。這是正常的,但..因爲我使用動態JavaScript添加新的輸入,當我重新加載時,所有添加的輸入都被刪除..

有什麼我可以做的嗎?

這是我view.tpl的爲例:

<input 
    type="text" 
    placeholder="ex: cerise" 
    onfocus="javascript:autoComplet('jigd1', '{site_url('recettes/getIngredient')}')" 
    value="{set_value('igd[]')}" id="jigd1" name="igd[]" 
/> 
{form_error('igd[]')} 

添加我的js的partiel代碼文件

var cpt=1; 
function addField(uriIngredient, uriLabel) { 
try 
{ 
cpt=cpt+1; 
var inputIgd = document.createElement('input'), 
button = document.createElement('input'), 
div = document.createElement('div'), 
inputIgd.setAttribute('type','text'); 
inputIgd.setAttribute('name','igd[]'); 
inputIgd.setAttribute('id','jigd'+cpt); 


button.setAttribute('type','button'); 
button.setAttribute('onclick','javascript:supField("igd'+cpt+'")'); 
button.setAttribute('value','Supprimer'); 
div.setAttribute('id','igd'+cpt); 
div.appendChild(inputIgd); 
div.appendChild(button); 
document.getElementById("listIgd").appendChild(div); 
... 

經過一番研究,我想看看是什麼,有人說我,這就是說localStorage,這是非常好的。 我只用一個輸入的例子,因爲我把它寫在我的html中,但我不知道如何重新創建所有輸入。特別是因爲我使用JavaScript來添加新的輸入,所以我不知道如果我可以重新創建所有輸入。

+0

您應該考慮通過ajax提交表單,並使用javascript處理響應(顯示錯誤消息等)。這樣你可以避免整個頁面重新加載的問題 – Jonah

+0

沒有其他解決方案? – Choubidou

+0

有很多解決方案,這只是我一起去的。另一種方式是正常提交​​頁面,並讓你的服務器返回更新後的html,動態添加內容 – Jonah

回答

0

檢查前提交的形式,這樣你就不必使用jQuery重新加載頁面,例如...

$("#myformid").on("submit", function(){ 
    var goodtogo = true; 
    // some code here to check the form, if there's an error --> goodtogo = false; 
    if (!goodtogo) return false; // and some other code to display the errors 
}); 

這樣一來,如果有錯誤,表單不會提交併不會重新加載。 如果您必須檢查數據庫中的某些內容(例如),如檢查用戶名是否已存在,則必須使用ajax。

+0

我已經使用CodeIgniter表單驗證檢查了我的錯誤..我真的不能沒有它.. – Choubidou

+0

那麼,我建議你使用AJAX,它非常強大,一旦你習慣了它,你一定會喜歡它 –