Select2 Picker 没有获得价值
Select2 Picker not getting value
Table img
我有第一行(Emp Id 列 select2)class selectpicker2
所以我初始化它并在更改它时获取值
$('.selectpicker2').select2().on('open', function(e) {
this.results.clear();
this.dropdown._positionDropdown();
}).on('change', function(e) {
var tr = $(this).parents('tr');
var data = tr.find($(".selectpicker2 option:selected")).text();
console.log(data);
});
第一行完全没问题,但是当我添加第二行、第三行等等时
关于从未执行过的更改,我检查了它的 class 是否也存在
$('#addmore').on('click', function() {
$('#sitebody').append(clonedtr);
$('#sitebody > tr:last .selectpicker2').select2().on('open', function(e) {
this.results.clear();
this.dropdown._positionDropdown();
});
});
这是克隆行
var clonedtr = '<tr>' +
'<td><a class="btn btn-danger delrow"><i class="fa fa-times"></i></a></td>' +
'<td>' +
'<select name="emp_id[]" class="form-control selectpicker2" title="Select Employee" data-live-search="true" required>' +
<?php foreach($employee as $row): ?>
'<option value="<?= $row['
user_id ']?>"><?= $row['
user_id '].' - '.$row['
user_full_name ']; ?></option>' +
<?php endforeach; ?>
'</select>' +
'</td>' +
'<td><input type="text" class="cal form-control" name="salary[]" placeholder="Basic Pay" value="12000"></td>' +
'<td><input type="text" class="cal form-control" name="work_days[]" placeholder="Enter No of Days" value="0" required></td>' +
'<td><input type="text" class="cal form-control" name="ot_days[]" placeholder="Enter No of Days" value="0" required></td>' +
'<td><input type="text" class="cal form-control" name="basic_pay[]" placeholder="Basic Pay" value="5000"></td>' +
'<td><input type="text" class="cal form-control" name="actual_pay[]" placeholder="Actual Pay" value="0"></td>' +
'<td><input type="text" class="cal form-control" name="da[]" placeholder="Enter DA" value="0"></td>' +
'<td><input type="text" class="cal form-control" name="hra[]" value="0" placeholder="Enter HRA"></td>' +
'<td><input type="text" class=" cal form-control" name="wa[]" value="500" placeholder="Washing Allowance"></td>' +
'<td><input type="text" class=" cal form-control" name="tpt[]" value="500" placeholder="Enter TPT"></td>' +
'<td><input type="text" class=" cal form-control" name="lwf[]" value="6" placeholder="Enter LWF"></td>' +
'<td><input type="text" class=" cal form-control" name="pf[]" placeholder="PF" value="0"></td>' +
'<td><input type="text" class=" cal form-control" name="esi[]" placeholder="ESI" value="0"></td>' +
'<td><input type="text" class=" cal form-control" name="bonus[]" placeholder="Bonus" value="0"></td>' +
'<td><input type="text" class=" cal form-control" name="leave_allowance[]" value="0" placeholder="Leave with Allowance"></td>' +
'<td><input type="text" class="cal form-control" name="other_allowance[]" placeholder="Other Allowance" value="0"></td>' +
'<td><input type="text" class="cal form-control" name="g_salary[]" placeholder="Gross Salary" value="0"></td>' +
'<td><input type="text" class=" cal form-control" name="pf2[]" placeholder="PF" value="0"></td>' +
'<td><input type="text" class=" cal form-control" name="esi2[]" placeholder="ESI" value="0"></td>' +
'<td><input type="text" class="cal form-control" name="p_tax[]" placeholder="PT" value="0"></td>' +
'<td><input type="text" class="cal form-control" name="advance[]" placeholder="Advance" value="0"></td>' +
'<td><input type="text" class="cal form-control" name="dress[]" placeholder="Dress" value="0"></td>' +
'<td><input type="text" class="cal form-control" name="police_verification[]" placeholder="PVC" value="0"></td>' +
'<td><input type="text" class="cal form-control" name="other_deduction[]" placeholder="Other Deduction" value="0"></td>' +
'<td><input type="text" class="cal form-control" name="net_salary[]" placeholder="Net Salary" value="0"></td>' +
'<td><input type="text" class="cal form-control" name="ot_salary[]" placeholder="OT Salary" value="0"></td>' +
'<td><input type="text" class="cal form-control" name="total_pay[]" placeholder="Total Pay" value="0"></td>' +
'</tr>';
由于您将创建更多 <tr>
,请为其分配一个 class,以便您在附加后轻松将其初始化为 select2。
var clonedtr = '<tr class="for_select2">' +
$('#addmore').on('click', function() {
$('#sitebody').append(clonedtr);
$('.for_select2').select2().on('open', function(e) {
this.results.clear();
this.dropdown._positionDropdown();
});
});
我明白了,我必须在行克隆/添加新行时添加 onChange,就像这样
$('#addmore').on('click', function(){
$('#sitebody').append(clonedtr);
$('#sitebody > tr:last .selectpicker2').select2().on('open', function (e) {
this.results.clear();
this.dropdown._positionDropdown();
}).on('change', function(e) {
var tr = $(this).parents('tr');
var data = tr.find($(".selectpicker2 option:selected")).text();
console.log("Inside selectpicker2");
console.log(data);
});
Table img
我有第一行(Emp Id 列 select2)class selectpicker2
所以我初始化它并在更改它时获取值
$('.selectpicker2').select2().on('open', function(e) {
this.results.clear();
this.dropdown._positionDropdown();
}).on('change', function(e) {
var tr = $(this).parents('tr');
var data = tr.find($(".selectpicker2 option:selected")).text();
console.log(data);
});
第一行完全没问题,但是当我添加第二行、第三行等等时 关于从未执行过的更改,我检查了它的 class 是否也存在
$('#addmore').on('click', function() {
$('#sitebody').append(clonedtr);
$('#sitebody > tr:last .selectpicker2').select2().on('open', function(e) {
this.results.clear();
this.dropdown._positionDropdown();
});
});
这是克隆行
var clonedtr = '<tr>' +
'<td><a class="btn btn-danger delrow"><i class="fa fa-times"></i></a></td>' +
'<td>' +
'<select name="emp_id[]" class="form-control selectpicker2" title="Select Employee" data-live-search="true" required>' +
<?php foreach($employee as $row): ?>
'<option value="<?= $row['
user_id ']?>"><?= $row['
user_id '].' - '.$row['
user_full_name ']; ?></option>' +
<?php endforeach; ?>
'</select>' +
'</td>' +
'<td><input type="text" class="cal form-control" name="salary[]" placeholder="Basic Pay" value="12000"></td>' +
'<td><input type="text" class="cal form-control" name="work_days[]" placeholder="Enter No of Days" value="0" required></td>' +
'<td><input type="text" class="cal form-control" name="ot_days[]" placeholder="Enter No of Days" value="0" required></td>' +
'<td><input type="text" class="cal form-control" name="basic_pay[]" placeholder="Basic Pay" value="5000"></td>' +
'<td><input type="text" class="cal form-control" name="actual_pay[]" placeholder="Actual Pay" value="0"></td>' +
'<td><input type="text" class="cal form-control" name="da[]" placeholder="Enter DA" value="0"></td>' +
'<td><input type="text" class="cal form-control" name="hra[]" value="0" placeholder="Enter HRA"></td>' +
'<td><input type="text" class=" cal form-control" name="wa[]" value="500" placeholder="Washing Allowance"></td>' +
'<td><input type="text" class=" cal form-control" name="tpt[]" value="500" placeholder="Enter TPT"></td>' +
'<td><input type="text" class=" cal form-control" name="lwf[]" value="6" placeholder="Enter LWF"></td>' +
'<td><input type="text" class=" cal form-control" name="pf[]" placeholder="PF" value="0"></td>' +
'<td><input type="text" class=" cal form-control" name="esi[]" placeholder="ESI" value="0"></td>' +
'<td><input type="text" class=" cal form-control" name="bonus[]" placeholder="Bonus" value="0"></td>' +
'<td><input type="text" class=" cal form-control" name="leave_allowance[]" value="0" placeholder="Leave with Allowance"></td>' +
'<td><input type="text" class="cal form-control" name="other_allowance[]" placeholder="Other Allowance" value="0"></td>' +
'<td><input type="text" class="cal form-control" name="g_salary[]" placeholder="Gross Salary" value="0"></td>' +
'<td><input type="text" class=" cal form-control" name="pf2[]" placeholder="PF" value="0"></td>' +
'<td><input type="text" class=" cal form-control" name="esi2[]" placeholder="ESI" value="0"></td>' +
'<td><input type="text" class="cal form-control" name="p_tax[]" placeholder="PT" value="0"></td>' +
'<td><input type="text" class="cal form-control" name="advance[]" placeholder="Advance" value="0"></td>' +
'<td><input type="text" class="cal form-control" name="dress[]" placeholder="Dress" value="0"></td>' +
'<td><input type="text" class="cal form-control" name="police_verification[]" placeholder="PVC" value="0"></td>' +
'<td><input type="text" class="cal form-control" name="other_deduction[]" placeholder="Other Deduction" value="0"></td>' +
'<td><input type="text" class="cal form-control" name="net_salary[]" placeholder="Net Salary" value="0"></td>' +
'<td><input type="text" class="cal form-control" name="ot_salary[]" placeholder="OT Salary" value="0"></td>' +
'<td><input type="text" class="cal form-control" name="total_pay[]" placeholder="Total Pay" value="0"></td>' +
'</tr>';
由于您将创建更多 <tr>
,请为其分配一个 class,以便您在附加后轻松将其初始化为 select2。
var clonedtr = '<tr class="for_select2">' +
$('#addmore').on('click', function() {
$('#sitebody').append(clonedtr);
$('.for_select2').select2().on('open', function(e) {
this.results.clear();
this.dropdown._positionDropdown();
});
});
我明白了,我必须在行克隆/添加新行时添加 onChange,就像这样
$('#addmore').on('click', function(){
$('#sitebody').append(clonedtr);
$('#sitebody > tr:last .selectpicker2').select2().on('open', function (e) {
this.results.clear();
this.dropdown._positionDropdown();
}).on('change', function(e) {
var tr = $(this).parents('tr');
var data = tr.find($(".selectpicker2 option:selected")).text();
console.log("Inside selectpicker2");
console.log(data);
});