想象一下,我們在HTML頁面中有一個表單。通過填充特定字段或選擇某個單選按鈕或選擇標籤的值,某些字段出現和消失是非常普遍的行爲。這可以使用Java腳本完成。我想知道是否可以通過觸發ajax調用來向CURRENT表單添加一些新字段。那可能嗎?如何在當前表單中添加新字段?
如果我想通過一個Ajax調用傳遞給服務器添加頁面上的一些新的領域,我要補充的新形式的網頁包含這些字段或我可以用我目前的形式?
想象一下,我們在HTML頁面中有一個表單。通過填充特定字段或選擇某個單選按鈕或選擇標籤的值,某些字段出現和消失是非常普遍的行爲。這可以使用Java腳本完成。我想知道是否可以通過觸發ajax調用來向CURRENT表單添加一些新字段。那可能嗎?如何在當前表單中添加新字段?
如果我想通過一個Ajax調用傳遞給服務器添加頁面上的一些新的領域,我要補充的新形式的網頁包含這些字段或我可以用我目前的形式?
是的,只要把代碼中的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"]);
}
}
非常感謝。你能告訴我如何使用你的代碼觸發這個Ajax調用嗎?我瞭解你所寫的內容,但是我不知道如何在按下'提交'按鈕之前添加其他字段。 – Suo6613 2014-10-02 11:23:57
我對小提琴做了一些改變,使用jsfiddle json echo for ajax requet http://jsfiddle.net/ua47escq/7/ – Beckafly 2014-10-03 02:51:38
哦,ajax函數是由一個事件處理函數觸發的(它以myinput.addEventListner開頭),它監聽在第二場KeyUp事件,如果字AJAX是在鍵入它觸發AjaxCall的()function.So,如果你不按排在第二字段中鍵入單詞阿賈克斯後提交,那麼事件聽者會調用AjaxCall的()。你可以改變邏輯來滿足你的特殊需求。基本上,無論何時調用ajaxcall(),它都會調用並創建字段。 – Beckafly 2014-10-03 03:48:33
請給出你想要如何添加新的領域的一些更規範。意味着在哪種情況下以及何時。可以在窗體中添加新的字段。 – herr 2014-10-02 04:44:24
我想添加一個新的字段(讓我們說一個輸入字段)到我當前的表單,例如點擊一個單選按鈕後觸發一個Ajax調用!我知道可以使用JavaScript。但是在這種情況下,這個字段在隱藏時應該存在於當前的DOM上。但是,我想知道是否有可能有一個窗體,例如在第一個輸入字段中,並且在觸發Ajax調用後將有三個輸入字段。那可能嗎? – Suo6613 2014-10-03 02:50:39