Ich habe ein Rechnungsformular und Benutzer können so viele Teile hinzufügen, wie sie wollen. Wenn der Benutzer die Teilenummer eingibt, habe ich ein Ajax-Skript, das die Beschreibung und den Preis automatisch ausfüllt.Ajax automatische Füllung auf dynamische Eingabefelder
Das Skript arbeitet für die ersten Anfangseingabefelder, aber wenn ich hinzufügen, mehrere Eingabefelder, das Skript funktioniert nicht auf den neuen Eingabefelder:
****** Bitte überprüfen Sie meine Updates ***** * - immer noch nicht
<table id="partstable" class="table order-list2 table-hover table-condensed table-bordered" >
<thead>
<tr>
<th width="30%">Part #</th>
<th width="30%">Part Desc.</th>
<th size="4">Part Price</th>
<th>Part Qty</th>
<th>Total</th>
<th></th>
</tr>
</thead>
<tbody>
<tr>
<td><input type="text" class="input-small classpp" name="partnumber" id="partnumber0"></td>
<td><input type="text" class="input-small classd" name="partdescription1" id="partdescription0"></td>
<td><input type="text" class="input-small classp" name="partprice" id="partprice0" size="4" onblur="doCalcoriginal(); calculate(); "></td>
<td><input type="text" class="input-small" name="partquantity" id="partquantity0" size="4" onblur="doCalcoriginal(); calculate(); showMessage(); "></td>
<input type="hidden" readonly class="partdb" size="4" name="partdb" id="partdb0" style="background-color: transparent;border: 0px solid;" >
<td><span class="amount" ></span></td>
<td><a class="deleteRow2"></a></td>
</tr>
</tbody>
<tfoot>
<tr>
<td colspan="5" style="text-align: left;">
<input type="button" id="addrow2" value="Add" class="btn btn-primary" />
</td>
</tr>
</tfoot>
</table>
ajax
<script type="text/javascript">
var count 0;
$("#partstable").on('blur keyup', "#partnumber"+count , function() {
searchString=$(this).val();
var data = 'partnumber='+searchString;
if(searchString) {
// ajax call
$.ajax({
type: "POST",
url: "partpricequery.php",
data: data,
success: function(html){
result = String(html).split("|"),
var counter=0;
loop{
$("#partdescription"+counter).val(result[0]);
$("#partprice"+counter).val(result[1]);
counter++;
}
showlabel();
}
});
}
return false;
});
</script>
hinzufügen mehr Taste
<script>
$(document).ready(function() {
var counter = 0;
$("#addrow2").on("click", function() {
doCalc();
doCalcoriginal();
calculate();
grandsum();
counter = $('#partstable tr').length - 2;
var newRow = $("<tr>");
var cols = "";
cols += '<td><input text="text" class="input-small" name="partnumber" id="partnumber'+counter+'" /></td>';
cols += '<td><input text="text" class="input-small" name="partdescription" id="partdescription'+counter+'"/></td>';
cols += '<td><input class="input-small" size="4" type="text" name="partprice" id="partprice'+counter+'" onblur="doCalc(); doCalcoriginal(); calculate(); calculate2();"/></td>';
cols += '<td><input class="input-small" size="4" type="text" name="partquantity" id="partquantity"'+counter+'" onblur="doCalc(); doCalcoriginal(); calculate(); calculate2();"/></td>';
cols += '<input type="hidden" readonly class="parttotal" size="4" name="partdb[]" style="background-color: transparent;border: 0px solid;" >';
cols += '<td><span class="amount"></span></td>';
cols += '<td><input type="button" class="ibtnDel btn btn-danger" value="X"></td>';
newRow.append(cols);
if (counter == 100) $('#addrow2').attr('disabled', true).prop('value', "You've reached the limit");
$("table.order-list2").append(newRow);
counter++;
});
$("table.order-list2").on("click", ".ibtnDel", function (event) {
$(this).closest("tr").remove();
doCalc();
doCalcoriginal();
calculate();
grandsum();
counter -= 1
$('#addrow2').attr('disabled', false).prop('value', "Add Row");
});
});
</script>
es jetzt auf jedem #partnumber feuert aber nur dann automatisch füllt die erste partdescription und partprice – JD6969
Weil Sie ein generisches Element Targeting sind mit '$ ("#partdescription"). val (result [0]), $ ("# partprice"). val (result [1]), 'welches das erste ist, auf das es stößt. Sie müssen den Index ermitteln. Der einfachste Weg ist, einfach einen Index aus Ihrer Counter-Variablen zu ihrer Klasse/ID/Namen hinzuzufügen, wenn sie erstellt werden, so dass Sie sie leicht unterscheiden können. –
ich versuchte, siehe oben – JD6969