2014-10-02 29 views
0

想象一下,我們在HTML頁面中有一個表單。通過填充特定字段或選擇某個單選按鈕或選擇標籤的值,某些字段出現和消失是非常普遍的行爲。這可以使用Java腳本完成。我想知道是否可以通過觸發ajax調用來向CURRENT表單添加一些新字段。那可能嗎?如何在當前表單中添加新字段?

如果我想通過一個Ajax調用傳遞給服務器添加頁面上的一些新的領域,我要補充的新形式的網頁包含這些字段或我可以用我目前的形式?

+0

請給出你想要如何添加新的領域的一些更規範。意味着在哪種情況下以及何時。可以在窗體中添加新的字段。 – herr 2014-10-02 04:44:24

+0

我想添加一個新的字段(讓我們說一個輸入字段)到我當前的表單,例如點擊一個單選按鈕後觸發一個Ajax調用!我知道可以使用JavaScript。但是在這種情況下,這個字段在隱藏時應該存在於當前的DOM上。但是,我想知道是否有可能有一個窗體,例如在第一個輸入字段中,並且在觸發Ajax調用後將有三個輸入字段。那可能嗎? – Suo6613 2014-10-03 02:50:39

回答

0

是的,只要把代碼中的ajax成功回調附加表單。 這裏是一個jsfiddle,假設你從ajax調用中獲得json。 只需在第二個字段中鍵入ajax(模擬ajax調用的條件),它將獲取假json響應,並將從該數據生成帶有字段名稱的額外字段。

http://jsfiddle.net/ua47escq/1/

<ul> 
<form action="" id ="myform"> 

<li> some field <input type="text"> </li> 
<li> other field <input type="text" id = "myinput"></li> 
<input type="submit" name="submit" id="submit"> 

</form> 
</ul> 
<script> 
var myinput = document.getElementById("myinput"); 
var form = document.getElementById("myform"); 
var submit = document.getElementById("submit"); 
var fragment = document.createDocumentFragment(); 
var fakejson = JSON.stringify([{ 
       "fieldname": "dynamic field1" 
      }, { 
       "fieldname": "dynamic field2" 
      }, { 
       "fieldname": "dynamic field3" 
      }]); 

myinput.addEventListener("keyup", function(evt) { 
     if (evt.target.value == "ajax") { 
      sucsess(fakejson); 
     } 
    }); 


function appendform(name) { 
    var li = document.createElement("li"); 
    var newinput = document.createElement("input"); 
    newinput.setAttribute('type', 'text'); 
    newinput.setAttribute('name', name); 
    li.textContent = name; 
    li.appendChild(newinput); 
    form.insertBefore(li, submit); 


} 

function sucsess(data) { 

    var json = JSON.parse(data); 
    for (key in json) { 
     appendform(json[key]["fieldname"]); 
    } 
} 

+0

非常感謝。你能告訴我如何使用你的代碼觸發這個Ajax調用嗎?我瞭解你所寫的內容,但是我不知道如何在按下'提交'按鈕之前添加其他字段。 – Suo6613 2014-10-02 11:23:57

+0

我對小提琴做了一些改變,使用jsfiddle json echo for ajax requet http://jsfiddle.net/ua47escq/7/ – Beckafly 2014-10-03 02:51:38

+0

哦,ajax函數是由一個事件處理函數觸發的(它以myinput.addEventListner開頭),它監聽在第二場KeyUp事件,如果字AJAX是在鍵入它觸發AjaxCall的()function.So,如果你不按排在第二字段中鍵入單詞阿賈克斯後提交,那麼事件聽者會調用AjaxCall的()。你可以改變邏輯來滿足你的特殊需求。基本上,無論何時調用ajaxcall(),它都會調用並創建字段。 – Beckafly 2014-10-03 03:48:33

相關問題