php - Jquery 不收集 textarea 值并且在特定条件下不将数组发送到 php

标签 php jquery html forms

我正在尝试制作一个系统,将所有文本区域的值放入一个数组中,然后将其发送到 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);
});

});

编辑

我不知道你的评论是什么意思。

  1. 您确实意识到您在代码中发送了一个对象,对吗?
  2. PHP 代码仍然以相同的方式访问数据。
  3. 如果您的意思是您不知道数据将在哪个索引中,请尝试下面的代码。

    $("#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/

相关文章:

php - Paypal 数字商品和显示购买

php - 日期和当前时间之间的时差?

javascript - Div 位置不正确

php - 使用 PHP 根据 URL 上传递的值更新 MySQL 行

javascript - 下拉菜单需要转到提交时分配的值

php - 有没有我可以用来提高 PHP 代码中大数字易读性的字符?

php - 修改字符串内的 4 位数字并插入冒号

javascript - 无法在聊天应用程序中使用 Ajax 调用从 Controller 返回 html

javascript - 连接断开时如何对 ajax post 表单数据进行排队

javascript - 如何比较属性值