2017-06-08 1 views
0

in engster Tabellenzelle zu bekommen habe ich folgende Tabellejquery verwenden Wert von Textbereich

<tr> 
<td data-toggle="tooltip" title="Not Started"><img src="images/small_info_icon.png"></td> 
<td>Demo Demo</td> 
<td>January</td> 
<td class="updaterow"><textarea class="form-control" rows="5" id="notes34455" name="editcomments">Not Started</textarea></td> 
<td id="34455"><button type="button" id="updatestatus" class="btn btn-info btn-sm">Update</button> </td> 
</tr> 

Ich möge Jquery verwenden, um den Wert des Textbereiches zu erhalten. Ich benutze folgendes, aber es gibt undefiniert.

$("button#updatestatus").click(function(){ 
var id = $(this).closest('td').attr('id'); 
var data = $(this).closest("updaterow").text;  
alert(data); 
var data = { 
      id: id, 

      }; 
$.ajax({ 
type: "POST", 
url: "updatestatus.php", 
data: data 
}).done(function(msg) { 
console.log(msg);   
}); 

Ist es möglich, den Textwert des Textfelds zu erhalten?

+0

Es ist '.text()'. – doutriforce

+0

Es fehlt ein '.' in' .closes ("updaterow") '. Es würde sowieso nicht funktionieren, da dieses Element kein Vorfahr ist. – j08691

+0

Warum verwenden Sie '.closes()' für '.updaterow'? '.closes()' sucht nach übereinstimmenden Eltern, aber '.updaterow' enthält die Schaltfläche nicht. – Barmar

Antwort

1

Dies ist, was Sie wollen

$("button#updatestatus").click(function(){ 

var data = $(this).parent().prev("td.updaterow").find("textarea").val();  
alert(data); 

}); 

Hier ist ein Beispiel

$("button#updatestatus").click(function(){ 
 

 
var data = $(this).parent().prev("td.updaterow").find("textarea").val();  
 
alert(data); 
 
     
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<html> 
 

 

 
<table> 
 
<tr> 
 
<td data-toggle="tooltip" title="Not Started"><img src="images/small_info_icon.png"></td> 
 
<td>Demo Demo</td> 
 
<td>January</td> 
 
<td class="updaterow"><textarea class="form-control" rows="5" id="notes34455" name="editcomments">Not Started</textarea></td> 
 
<td id="34455"><button type="button" id="updatestatus" class="btn btn-info btn-sm">Update</button> </td> 
 
</tr> 
 

 
</table> 
 

 
</html>

1

.closest() sucht nach dem nächsten enthaltenden Element, das mit dem Selektor übereinstimmt. .updaterow enthält nicht button#updatestatus, so wird es nicht gefunden. .updaterow ist die vorherige td, sollte es so sein:

var data = $(this).closest("tr").siblings(".updaterow").text(); 

Sie haben vergessen, auch die . in .updaterow und die () in .text().

0

Dies ist, was Sie brauchen -

$(this).closest('tr').find('textarea').val(); 

Hier ist eine Geige für das gleiche - https://jsfiddle.net/v44rzxLo/1/. Nebenbei bemerkt, haben Sie nicht dieselben IDs für mehrere Elemente.