Tüm gün boyunca yanıt aramaktaydım ve hala şans yok. Yani bu benim ilk soru (... gerçi, çaresizlikten) burada:Dinamik olarak oluşturulmuş açılır menü öğelerinin özel nitelik değerlerini başka bir öğeye ekleme
<tr taskId="(#=obj.task.id#)" assigId="(#=obj.assig.id#)" class="assigEditRow" >
<td><select name="resourceId" class="get-resources formElements"></select></td>
<td><span class="resources-units"></span></td>
<td><span class="resources-quantity"></span></td>
<td><input type="text" placeholder="Required Q"></td>
<td align="center"><span class="teamworkIcon delAssig" style="cursor: pointer">d</span></td>
</tr>
Ve burada JS biraz:
'use strict';
function addResourceFunction(){
let ResourcesJSON = (json) => {
let Resources = json;
console.log(Resources);
let contactsLength = json.length;
let arrayCounter = -1;
let resID;
let resName;
let resUnit;
let resQuantity;
let Option = $('<option />');
let assignedID = $('tr.assigEditRow:last').attr("assigId");
while(arrayCounter <= contactsLength) {
arrayCounter++;
resID = Resources[arrayCounter].ID;
resName = Resources[arrayCounter].name;
resUnit = Resources[arrayCounter].unit;
resQuantity = Resources[arrayCounter].quantity;
$('.assigEditRow').last().find('select').append($('<option>', {
value: resName.toString(),
text: resName.toString(),
resourceID: resID.toString(),
resourceUnit: resUnit.toString(),
resourceQuantity: resQuantity.toString()
}));
}
}
$.getJSON("MY JSON URL IS HERE", function(json) {
ResourcesJSON(json);
});
};
Ben burada HTML biraz var
Aslında burada neler oluyor: Verilerimi URL'den alıyorum (JSON dizisi), yeni bir tablo satırı oluşturmak ve diziden iletilen seçeneklerle yeni bir seçim eklemek için tıkla üzerine addResourceFunction() öğesini tıklayın. HTML işaretlememden göreceğiniz gibi, select input td.get-sources'a yerleştirilmiş ve tüm bunlar iyi çalışıyor. Randevu aldım, seçim alanını dolduruyorum ve her şey güzel. İstediğim kadar fazla satır/seçim açılır menüsü ekleyebilirim. Ayrıca, her seçeneğin birkaç özel özniteliği vardır (yukarıdaki JS kodumda görebilirsiniz) ve bu özniteliklerin değerlerini satırın ikinci ve üçüncü sütununa eklemek istiyorum (HTML'de bunlar span.resources birimleridir ve span.resources-miktar). Mesele şu ki, 1: 1 çalışmasını nasıl yapacağım hakkında hiçbir fikrim yok, bu da bir seçim açılır listesinin sadece kendi satırlarının birimlerini ve miktarını "değiştirdiği" anlamına geliyor.
let idCounter = 1;
$(document).on('change', '.get-resources', function() {
$('.assigEditRow').last().find('.resources-units').attr('id', 'units-' + idCounter);
$('.assigEditRow').last().find('.resources-quantity').attr('id', 'quantity-' + idCounter);
this.resourceUn = $(".get-resources option:selected").attr("resourceUnit");
this.resourceQuant = $(".get-resources option:selected").attr("resourceQuantity");
$('#units-' + idCounter).append(this.resourceUn);
$('#quantity-' + idCounter).append(this.resourceQuant);
idCounter++;
});
ne olur Bir seçme girişi ekleyin ve seçenekleri değiştirmek durumunda, şey çalışmasıdır: Aşağıda bunun için kodudur. Bir tane daha eklediğimde ve seçeneklerini değiştirdiğimde, ilkinin niteliklerini alır. Daha fazla şey eklemek - aynı şey. Değiştirdiğim her şey, eklenen ilk öğenin özellik değerini alır.
Umarım burada çok karmaşık bir hale getirmedim ve herhangi bir SO kuralını çiğnediysem özür dilerim ... Bu, her şeyden önce, benim ilk sorumum :) Çok teşekkürler!
Teşekkürler @Giannis Tzagarakis;) –