正在 jQuery 中保存用户输入?
Saving user input in jQuery?
$(document).ready(function () {
var userSites = newArray();
var max_fields = 100; //maximum input boxes allowed
var wrapper = $(".input_fields_wrap"); //fields wrapper
var add_button = $(".add_field_button"); //Add button ID
var x = 5; //initial text box count
$(add_button).click(function (e) { //on add input button click
e.preventDefault();
if (x < max_fields) {
x++; //text box increment
$(wrapper).append('<div><input type="text" name ="mytext[]"/><a href="#" class="remove_field">Remove</a></div>'); //add input box
}
});
$(wrapper).on("click", ".remove_field", function (e) { //user click on remove text
e.preventDefault();
$(this).parent('div').remove();
x--;
})
});
我有这段代码,因为我想要大量的用户输入。但是,一旦用户输入了这些东西,我该如何将其保存到数组中呢?那可能吗?我想将它保存到一个数组中,我可以从 java applet 访问它,这也可能吗?
在你们其中一个脚本标签中创建一个 Array 对象:
<script type="text/javascript" >
var myArr=new Array();
</script>
现在将 onchange 添加到您的输入中同时更新 myArr :
$(wrapper).append('<div><input type="text" name ="myText'+x.toString()+'" onchange="myArr.push(this.value);document.getElementById('myArrInput').value=JSON.stringify(myArr);" /><a href="#" class="remove_field" onclick="myArr['+x.toString()+'].value=null;document.getElementById('myArrInput').value=JSON.stringify(myArr);" >Remove</a></div>');
将此 hiddenField 添加到您的页面以将 myArr 作为 JSON 字符串发送给您的小程序:
<input id="myArrInput" type="hidden" name="myArray" value="" />
在服务器中,您必须将 myArray Json 字符串转换为对象。
However, now that the user has input this stuff, how do I save this into an array? Is that possible? I want to save it into an array that I can access from a java applet?
提交表单时,事件处理程序 collectData
收集每个 <input>
中的文本并使用 push
方法填充数组。然后将该数组存储在隐藏的 <input>
中,然后通过表单提取数据,然后将其发布到服务器。
我对 Java applet 了解不多,但我已经为您介绍到这里了。我建议你在一个新问题中询问 Java 。您的标签具有 JavaScript/jQuery 性质。
我的演示实际上是在测试服务器上运行的,因此一旦提交,服务器将使用发布到它的数据进行响应。
这个有效:http://plnkr.co/edit/seD0L3oI7dTnXQrrFZPl?p=preview
添加代码
form.addEventListener('submit', collectData, false);
function collectData(e) {
var userSites = [];
var cache = document.getElementById('cache');
var z = 0;
while (z < max_fields) {
z++;
var data = inputs[z].val();
userSites.push(data);
}
e.stopPropagation();
cache.value = userSites;
}
});
$(document).ready(function () {
var userSites = newArray();
var max_fields = 100; //maximum input boxes allowed
var wrapper = $(".input_fields_wrap"); //fields wrapper
var add_button = $(".add_field_button"); //Add button ID
var x = 5; //initial text box count
$(add_button).click(function (e) { //on add input button click
e.preventDefault();
if (x < max_fields) {
x++; //text box increment
$(wrapper).append('<div><input type="text" name ="mytext[]"/><a href="#" class="remove_field">Remove</a></div>'); //add input box
}
});
$(wrapper).on("click", ".remove_field", function (e) { //user click on remove text
e.preventDefault();
$(this).parent('div').remove();
x--;
})
});
我有这段代码,因为我想要大量的用户输入。但是,一旦用户输入了这些东西,我该如何将其保存到数组中呢?那可能吗?我想将它保存到一个数组中,我可以从 java applet 访问它,这也可能吗?
在你们其中一个脚本标签中创建一个 Array 对象:
<script type="text/javascript" >
var myArr=new Array();
</script>
现在将 onchange 添加到您的输入中同时更新 myArr :
$(wrapper).append('<div><input type="text" name ="myText'+x.toString()+'" onchange="myArr.push(this.value);document.getElementById('myArrInput').value=JSON.stringify(myArr);" /><a href="#" class="remove_field" onclick="myArr['+x.toString()+'].value=null;document.getElementById('myArrInput').value=JSON.stringify(myArr);" >Remove</a></div>');
将此 hiddenField 添加到您的页面以将 myArr 作为 JSON 字符串发送给您的小程序:
<input id="myArrInput" type="hidden" name="myArray" value="" />
在服务器中,您必须将 myArray Json 字符串转换为对象。
However, now that the user has input this stuff, how do I save this into an array? Is that possible? I want to save it into an array that I can access from a java applet?
提交表单时,事件处理程序 collectData
收集每个 <input>
中的文本并使用 push
方法填充数组。然后将该数组存储在隐藏的 <input>
中,然后通过表单提取数据,然后将其发布到服务器。
我对 Java applet 了解不多,但我已经为您介绍到这里了。我建议你在一个新问题中询问 Java 。您的标签具有 JavaScript/jQuery 性质。
我的演示实际上是在测试服务器上运行的,因此一旦提交,服务器将使用发布到它的数据进行响应。
这个有效:http://plnkr.co/edit/seD0L3oI7dTnXQrrFZPl?p=preview
添加代码
form.addEventListener('submit', collectData, false);
function collectData(e) {
var userSites = [];
var cache = document.getElementById('cache');
var z = 0;
while (z < max_fields) {
z++;
var data = inputs[z].val();
userSites.push(data);
}
e.stopPropagation();
cache.value = userSites;
}
});