2017-03-23 7 views
1

Ich versuche, alle Werte in meiner Tabelle in ein Objekt zu bekommen. Aber mein Tisch hat sowohl editierbare als auch schreibgeschützte <td>. Wenn ich irgendwelche Daten in editierbare <td> eingeben, kann ich nicht das gleiche mit unten Code erhalten. Bitte helfen Sie mir, das gewünschte Ergebnis zu erhalten.Wie bekomme ich den Benutzer bearbeitbare Tabelle Wert in jquery

var itemtbl = $('table#itemtable tr').map(function() { 
 
    \t return $(this).find('td').map(function() { 
 
    \t \t if($(this).find('input[type="text"],textarea').length) { 
 
\t \t \t alert("i am in text area"); 
 
\t \t  return $(this).val(); 
 
\t \t } else { 
 
\t \t \t alert("i am in readonly"); 
 
\t \t \t return $(this).text(); 
 
\t \t } 
 
    \t \t }).get(); 
 
    \t }).get();

//table will be loaded dynamically as below and create both editable and non-ediatble<td> 
 
$.each(responseJson, function(key,value) { 
 
    var rowNew = $("<tr><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td></tr>"); 
 
    rowNew.children().eq(0).append(i); \t \t \t \t \t    \t \t rowNew.children().eq(1).text(value['itemcode']);     rowNew.children().eq(2).text(value['itemname']);     rowNew.children().eq(3).text(value['receivedqty']);    rowNew.children().eq(4).html('<input type="text" id="inspdate"/>'); 
 
    rowNew.children().eq(5).html('<input type="text" id="accqty" onkeypress="return isNumber(event)"/>'); 
 
    rowNew.children().eq(6).html('<input type="text" id="rejqty" class="reject"/>'); 
 
rowNew.children().eq(7).html('<input type="text" id="rema"/>'); 
 
rowNew.appendTo($tbody); 
 
i++; 
 
});

+0

Check i f es hat Eingabe und wenn es ist, erhalten Sie den Eingabewert. –

+0

Bitte überprüfen Sie meinen aktualisierten Code. verwendet val(); aber kein Glück – kavi

Antwort

1
$("table#itemtable").find("tr").each(function(){ 
    // get each tr 
    $(this).find("td").each(function{ 
    // handle each td in current tr 
     if (!$(this).find("input")) 
     { 
      // no input elements here 
      var data = $(this).text() 
      // now data contains cell text 
     } 
    }) 
}) 

Der Code sollte geändert werden:

var itemtbl = $('table#itemtable tr').map(function() { 
    return $(this).find('td').map(function() { 
     if($(this).find('input[type="text"],textarea').length) { 
     alert("i am in text area"); 

     // $(this) will point to current <td> element, not to input 
      //   return $(this).val(); 
     return $(this).find('input[type="text"],textarea').val(); 
     // and this is correct context 

     } else { 
      alert("i am in readonly"); 
      return $(this).text(); 
     } 
     }).get(); 
    }).get(); 
+0

Danke. Bitte überprüfe meinen aktualisierten Code. Verwendet val(), um die Benutzerdaten abzurufen. aber nicht in der Lage, irgendwelche zu bekommen! – kavi

+0

natürlich. Sie verwenden $ (this), wenn Sie noch im "td" -Kontext sind, und truing, um val() vom td-Element zu erhalten – diavolic

Verwandte Themen