私は基本的な請求システムを持っています。このシステムでは、基本価格を変更すると、フォーム内のctnなどの単位を記入する項目(jquery select 2)を選択できます。請求書を保存する前に、この価格を変更することができます。jQueryがプログラムで完了したときに変更が発生しないようにする
この(保存された)請求書を(同じページとフォームで)編集する必要がある場合は、PHP GETでIDを取得してから、アイテムとその数量を取得するためにajaxで保存された請求書をフェッチします、価格などの詳細はフォームに記入する必要があります。
問題は、(ajaxの後で)選択ボックス(jquery select 2)内の項目をプログラムで選択すると、(前述のように)変更機能がトリガされ、代わりに基本価格などが取得されます。私が見てそれを変更するために計画的に記入したいものの
//Fetch Items
fetchItems()
function fetchItems() {
$.ajax({
url: 'https://api.myjson.com/bins/4z7se',
dataType: "json",
success: function(items) {
// Create list of items in select tag
var toAppend = '';
$.each(items, function(i, o) {
toAppend += '<option value="' + o.itemId + '">' + o.newName + '</option>';
});
$('#item').append(toAppend);
$('#item').select2({
placeholder: "Select an item",
escapeMarkup: function(markup) {
return markup;
}
})
},
error: function(xhr, ajaxOptions, thrownError) {
alert("ERROR:" + xhr.responseText + " - " + thrownError);
}
});
}
// On item select, get item details and fill in the table
// --->>> Select first item for this demo to get the details filled (usually it requests the values from mysql for the selected item)
$('#item').on('change', function() {
$.ajax({
url: 'https://api.myjson.com/bins/vjfi',
dataType: "json",
success: function(data) {
// Print item details in respective elements
$('#itemId').val(data[0]['itemId'])
$('#size').text(data[0]['size'])
$('#units_per_ctn').text(data[0]['units_per_ctn'])
$('#ctn_price').val(data[0]['ctn_price'])
$('#qty').val('') // Clear qty from previous
$('#total_price').text('') // Clear total price from previous
},
error: function(xhr, ajaxOptions, thrownError) {
alert("ERROR:" + xhr.responseText + " - " + thrownError);
}
});
})
// For update purpose, details to be filled in the form
$('#edit').click(function() {
//var editId = '<?PHP if(isset($_GET['edit '])) { echo $_GET['edit'];}?>';
var editId = 1 // Lets assume it for this demo
if (editId > 0) {
// Get transfer details for this id
$.ajax({
url: 'https://api.myjson.com/bins/1iwha',
dataType: 'json',
success: function(data) {
$('table #item').select2().val(data[0]['item_id']).trigger('change')
// Here is the proble, can't put these values in the input because as soon as select2 change is triggered it fills its own values to the inputs. But I want the following values (returned from mysql in json) to be filled in.
$('table #ctn_price').val(data[0]['ctn_price'])
$('table #qty').val(data[0]['qty'])
$('table #totap_price').val(data[0]['total_price'])
},
error: function(xhr, ajaxOptions, thrownError) {
alert("ERROR:" + xhr.responseText + " - " + thrownError);
}
})
}
})
Here is the Fiddle
なぜ、 '.trigger( '変更')を'削除しないで! – eisbehr
新しい請求書を作成するときに必要です – sohal07
これは請求書を追加および編集するための同じページです – sohal07