2
I mit einem oder mehreren Reihe eine HTML-Tabelle haben. Ich habe 4 Spalten in meiner Tabelle in diesem ist eine Checkbox. Zwei Buttons gibt es "AddRowAbove" und "AddRowBelow". Wenn ein bestimmtes Kontrollkästchen aktiviert ist und auf eine Schaltfläche geklickt wird, sollte basierend auf dem Namen der Schaltfläche eine neue Zeile hinzugefügt werden. Mein Code sieht so aus, nicht sicher, wie man das Ergebnis erzielt.Erstellen neue Zeile auf die Schaltfläche klicken
function addNewRowAbove() {
alert("actioned !!!");
var rowNumber = document.getElementById("rowIndex").value;
var rowNumberNew = parseInt(rowNumber) - 1;
alert(rowNumber + " - " + rowNumberNew);
var newRow = $('<tr/>').attr('id', 'row' + rowNumberNew);
newRow.html('<td><input type="checkbox" name="radio1" id="radio' + rowNumberNew + '"></input><input type="hidden" id="rowIndex' + rowNumberNew + '" value="' + rowNumberNew + '"/></td><td><input type="text" name="empid" id="empid' + rowNumberNew + '"></input></td><td><input type="text" name="empfname" id="empfname' + rowNumberNew + '"></input></td><td><input type="text" name="emplname" id="emplname' + rowNumberNew + '"></input></td>');
$('#maintable tbody').append(newRow);
}
function addNewRowBelow() {
alert("actioned !!!");
var rowNumber = document.getElementById("rowIndex").value;
var rowNumberNew = parseInt(rowNumber) + 1;
alert(rowNumber + " - " + rowNumberNew);
var newRow = $('<tr/>').attr('id', 'row' + rowNumberNew);
newRow.html('<td><input type="checkbox" name="radio1" id="radio' + rowNumberNew + '"></input><input type="hidden" id="rowIndex' + rowNumberNew + '" value="' + rowNumberNew + '"/></td><td><input type="text" name="empid" id="empid' + rowNumberNew + '"></input></td><td><input type="text" name="empfname" id="empfname' + rowNumberNew + '"></input></td><td><input type="text" name="emplname" id="emplname' + rowNumberNew + '"></input></td>');
$('#maintable tbody').append(newRow);
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<form>
<table id="maintable" width="50%" cellpadding="0" cellspacing="0" border="#729111 1px solid">
<tr>
<th align="center">Select</th>
<th align="center">Employee ID</th>
<th align="center">First Name</th>
<th align="center">Last Name</th>
</tr>
<tr>
<td><input type="checkbox" name="radio" id="radio"></input><input type="hidden" id="rowIndex" value="1" /></td>
<td><input type="text" name="empid"></input>
</td>
<td><input type="text" name="empfname"></input>
</td>
<td><input type="text" name="emplname"></input>
</td>
</tr>
<tr>
<td><input type="checkbox" name="radio1" id="radio1"></input><input type="hidden" id="rowIndex" value="2" /></td>
<td><input type="text" name="empid1"></input>
</td>
<td><input type="text" name="empfname1"></input>
</td>
<td><input type="text" name="emplname1"></input>
</td>
</tr>
<tr>
<td></td>
<td> <input type="submit" name="AddRowAbove" value="AddRowAbove" onclick="addNewRowAbove()"></td>
<td> <input type="submit" name="AddRowBelow" value="AddRowBelow" onclick="addNewRowBelow()"></td>
<td></td>
</tr>
</table>
</form>
Zuerst 'id' ist einzigartig, so dass Sie nicht anderes Element mit dem gleichen' id' wie 'id = "rowIndex"' setzen soll. Zweitens, Ihre Tabelle hat nicht '
'. Bitte fügen Sie es hinzu. –Was ist die Referenz für oben und unten? das Kontrollkästchen, auf das der Benutzer geklickt hat? – Dherya
@MrNeo Ich bin mir nicht sicher, wie man die Zeilennummer jeder Zeile erhält. Bitte schlagen Sie eine beste Methode vor. –
Antwort
Ich habe
var selectedRow = $("input:checked").parent().parent();
sowohl Ihre Funktionen die übergeordnete Zeile des geprüften Elements zu finden, und dann verwendet, um entweder$(newRow).insertBefore(selectedRow);
oder$(newRow).insertAfter(selectedRow);
je nach auf der Schaltfläche geklickt.Hoffentlich hilft das.
UPDATE:
In Reaktion auf die Stellungnahme beantragt, dass die IDs der Zeilen in Ordnung gehalten werden, selbst nachdem Zeilen dynamisch hinzugefügt, habe ich hinzugefügt, um eine
SortRowIDs()
Funktion, die am Ende der beidenaddNewRowAbove()
genannt wird undaddNewRowBelow()
.Diese Funktion packt alle
<input type="checkbox"/>
Tags in<table id="maintable"></table>
und durchläuft sie anschließend mit der Methode.each()
von jQuery. Die übergeordnete Zeile jeder Checkbox erhält dann eine ID basierend auf ihrer Reihenfolge in der Tabelle. Ich habe auch ein paar Kommentare in den Code eingefügt, so dass es leichter zu folgen ist.Quelle
2017-03-02 10:03:38 BFG
Ich habe diesen Code einfach kopiert und er blinkt nur beim Klick. Aber hier, wenn ich den Code laufen lasse, funktioniert es !!!! –
Hmm .. hast du meinen HTML genau kopiert? Ich ändere etwas von Ihrem Code (d. H. Sehen Sie sich meine Tags vs Ihre Tags) also vielleicht einige Ihrer Code, der nicht mit diesem Formular verbunden ist ungültig ist? Erhalten Sie irgendwelche Konsolenfehler? – BFG
Ja, ich habe das gleiche kopiert und es gibt keinen Fehler in der Konsole. Im Folgenden sind die Nachrichten von der Konsole kopiert. HTML1300: Navigation ist aufgetreten. Datei: AddNewRowsIn.html HTML1527: DOCTYPE erwartet. Ziehen Sie in Betracht, einen gültigen HTML5-Doctyp hinzuzufügen: "". Datei: AddNewRowsIn.html, Zeile: 1, Spalte: 1 DOM7011: Der Code auf dieser Seite zurück und vorwärts Caching deaktiviert. Weitere Informationen finden Sie unter: http://go.microsoft.com/fwlink/?LinkID=291337 Datei: AddNewRowsIn.html –
können Sie insertBefore verwenden, um neue Zeile über Tasten anhängen (geben
id="button"
Inhalt Tasten Zeile). Versuchen Sie, mit folgenden Lösung:Quelle
2017-03-02 09:47:21
Verwandte Themen