フォームリピータを使用して請求書を作成しています。請求書には、データベースから価格で提供される複数の商品があります。 私が製品を選択するとその価格は自動的に料金欄に表示され、割引やパーセンテージのような他の入力ボックスがあり、デフォルトでは0 0です。最初の行は非常にうまく動作します。しかし、私は別の製品を追加するために、次の行を生成するために、ボタンを追加するをクリックします。PHPが動作しない行を追加する(フォームリピータ)
次の行では、プルダウンから製品を選択できます。その手数料は表示されず、割引やパーセンテージなどの他の入力ボックスの値も消えます(デフォルト値は表示されません)。
ここは自分のHTMLコードです。
<div class="row">
<div class="col-xs-3">
<label for="single" class="control-label">Select Invoice Type</label>
</div>
<div class="col-xs-2">Fee</div>
<div class="col-xs-1">Quantity</div>
<div class="col-xs-1">Discount</div>
<div class="col-xs-2">Total</div>
<div class="col-xs-1">Doctor %</div>
</div>
<div class="mt-repeater">
<div data-repeater-list="group-b">
<div data-repeater-item class="row">
<div class="col-xs-3">
<div class="form-group">
<select id="invoice" class="form-control" name="invoice">
<option></option>
<?php
$select = mysqli_query(connection(), "select * from treatement");
while($r = mysqli_fetch_array($select)) {
echo "<option value='$r[0]'>$r[name]</option>";
}
?>
</select>
</div>
</div>
<div class="col-xs-2">
<div class="form-group">
<input type="text" value="" class="form-control" placeholder="Fee" name="fees" id="fees">
</div>
</div>
<div class="col-xs-1">
<div class="form-group">
<input type="text" class="form-control" value="1" name="quantity" >
</div>
</div>
<div class="col-xs-1">
<div class="form-group">
<input type="text" value="0" class="form-control" placeholder="Discount" name="discount">
</div>
</div>
<div class="col-xs-2">
<div class="form-group">
<input type="text" value="0" class="form-control" placeholder="Total" readonly name="total">
</div>
</div>
<div class="col-xs-2">
<div class="form-group">
<input type="text" value="0" class="form-control" placeholder="%" name="percentage">
</div>
</div>
<div class="col-md-1">
<a href="javascript:;" data-repeater-delete class="btn btn-danger">
<i class="fa fa-close"></i>
</a>
</div>
</div>
</div>
<a href="javascript:;" data-repeater-create class="btn btn-info mt-repeater-add">
<i class="fa fa-plus"></i> Add More
</a>
<br>
<br>
</div>
そして、私は各製品の料金を比較するためにjs関数を使用します。これは、箱に料金を表示するのに役立ちます。
$(document).ready(function() {
$("#invoice").change(function() {
var value = $(this).val();
$.get("get_fees.php", {
id: value
}, function(data) {
$("#fees").val(data);
})
})
})
すべての行で 'id ="請求書 "を使用していますか? IDは一意でなければなりません.IDの代わりにクラスを使用する必要があります。そして、[動的に作成された要素のイベントバインディング](https:// stackoverflow。com/questions/203198/event-binding-on-dynamically-created-elements)を使用して、イベントハンドラをバインドする適切な方法を示します。 – Barmar
注: 'mysqli'へのオブジェクト指向インタフェースは、コードの読み込みと監査をより簡単にするために、あまり冗長ではなく、古くから' mysql_query'インタフェースと混同されにくいです。手続き型スタイルに多額の投資をする前に、それを切り換える価値があります。例: '$ db = new mysqli(...)'と '$ db-> prepare(" ... ")'手続き型インタフェースはmysqli' APIが導入されたPHP 4時代のアーティファクトであり、コード。 – tadman