我正在尝试制作一个系统,将所有文本区域的值放入一个数组中,然后将其发送到 php 进行处理,如果页面只有带有文本框的文本区域,如下所示:
<div class='form-group'>
<textarea class='col-sm-2' id='" + counter + "'></textarea>
<div class='col-sm-10'>
<input type='text' class='form-control'></input>
</div>
</div>
一切顺利。但是,如果页面包含单选框:
<div class='form-group'>
<textarea class='col-sm-2' id='" + counter + "'></textarea>
<div class='radio'>
<input type='radio' name='optradio'></input>
<textarea class='col-sm-2' id='" + counter + "'></textarea>
</div>
<div class='radio'>
<input type='radio' name='optradio'></input>
<textarea id='" + counter + "'></textarea>
</div>
</div>
jquery代码没有收集到所有的textareas,没有成功发送给php代码处理。
$("#save").click(function () {
for (var i = 0; i < counter; i++) {
form1[i].push($("#" + i).val());
}
$.post("FormResponse.php", {form: form1, formid:$("#formnum").val()}, function (response, status) {
document.write(response);
});
更新:
我更改了我的 jquery 代码以在一个地方同时获取类型和文本区域值,但它仍然不起作用。我不想使用对象,因为我希望我的 php 代码能够轻松区分哪些文本区域属于哪些输入。
修改后的代码如下:
$("#save").click(function () {
var ind = 0;
for (var i = 0; i < inputcounter; i++) {
if (document.getElementById("input#" + i) !== null) {
form1.push($("input#" + i).type());
ind = ind + 1;
}
form1[ind].push($("textarea#" + i).val());
}
document.write(form1);
$.post("FormResponse.php", {form: form1, formid: $("#formnum").val()}, function (response, status) {
document.write(response);
});
});
最佳答案
还没有测试过,但试试这个。
$("#save").click(function () {
var data = {};
$.each($('textarea'),function(){
var $this = $(this);
data[$this.id] = $this.val();
})
$.post("FormResponse.php",data,function(rep){
console.log(rep);
});
});
编辑
我不知道你的评论是什么意思。
- 您确实意识到您在代码中发送了一个对象,对吗?
- PHP 代码仍然以相同的方式访问数据。
如果您的意思是您不知道数据将在哪个索引中,请尝试下面的代码。
$("#save").click(function () { var data = {}; $.each($('textarea'),function(){ var $this = $(this); data[$this.id] = $this.val(); }) $.post("FormResponse.php",{form:data, formid:$("#formnum").val()},function(rep){ console.log(rep); }); });
关于php - Jquery 不收集 textarea 值并且在特定条件下不将数组发送到 php,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38649803/