2014-10-02 33 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

相关问题