2016-07-29 4 views
2

Ich versuche ein System zu erstellen, das den Wert aller Textfelder in ein Array bringt und es zur Verarbeitung an php sendet, wenn eine Seite nur textareas hat Textfeld wie hier:Jquery sammelt keine textarea Werte und sendet keine Arrays an php unter bestimmten Bedingungen

<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> 

Alles geht gut. Allerdings, wenn die Seite Radio-Box umfasst:

<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> 

Die jQuery-Code sammelt nicht alle Textfelder und nicht erfolgreich an den PHP-Code für die Verarbeitung senden.

$("#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); 
     }); 

Update:

ich um meinen jQuery-Code verändert sowohl die Art und die Textarea-Werte an einem Ort zu bekommen und es funktioniert immer noch nicht. Ich wollte keine Objekte verwenden, weil ich möchte, dass es für meinen PHP-Code einfach ist, zu unterscheiden, welche Textbereiche zu welchen Eingaben gehören. Hier

ist der Code Revision:

$("#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); 
    }); 
}); 

Antwort

0

habe es nicht getestet, aber versuchen Sie dies.

$("#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); 
}); 

}); 

bearbeiten

Ich habe keine Ahnung, was Ihr Kommentar Mittel.

  1. Sie erkennen, dass Sie ein Objekt in Ihrem Code richtig senden?
  2. Der PHP-Code greift weiterhin auf die Daten auf die gleiche Weise zu.
  3. Wenn Sie meinen, dass Sie nicht wissen, in welchem ​​Index sich die Daten befinden, versuchen Sie es mit dem folgenden Code.

    $("#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); 
    }); 
    
    }); 
    
+0

Ich will nicht, Objekte verwenden, weil ich es für meine PHP-Code einfach sein möchten, welche Textbereiche zu unterscheiden, gehören die Input-Parameter. –

+0

@BenRei sehe meine Bearbeitung – bassxzero