想象一下,我们在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