如何在Javascript/Jquery中添加表格行时更改组合框选择上的文本框
How to Change textbox on combobox selection while adding table rows in Javascript/Jquery
我有一个动态添加行的表,它有一个选择框,当onchange函数被触发时改变文本框的值,但问题是,当添加新行时,它重置所有文本框的值,而不是特定的空框。你如何使它相应地改变。
$(function () {
$(document).on('change', 'select.products', function(){
var selected = $(this).val();
$(".price").val(selected);
});
$(document).on('click', '.addProduct', function(){
var ele = $(this).parents('tr').clone();
ele.find('input[type=text]').val('');
$(this).parents('tr').after(ele);
});
$(document).on('click', '.delProduct', function(){
if($(this).parents('table').find('tr').length > 2) {
$(this).parents('tr').remove();
}
});
});
<table id="addProducts" border="1">
<tr>
<td>POI</td>
<td>Quantity</td>
<td>Price</td>
<td>Product</td>
<td>Add Rows?</td>
</tr>
<tr>
<td>1</td>
<td><input size=25 type="text" id="lngbox" readonly=true/></td>
<td><input size=25 type="text" class="price" readonly=true/></td>
<td>
<select name="selRow0" class="products">
<option value="500">Product 1</option>
<option value="200">Product 2</option>
<option value="450">Product 3</option>
</select>
</td>
<td><input type="button" class="delProduct" value="Delete" /></td>
<td><input type="button" class="addProduct" value="AddMore" /></td>
</tr>
</table>
<div id="shw"></div>
请参阅下面的小提琴谢谢
https://jsfiddle.net/josephat/xd7zknyc/3/我已经通过你的JS提琴链接。您需要通过使用最接近的jquery获取当前列引用来将值更改为特定行。
解决方案是,更改下面的代码并尝试:
$(function () {
$(document).on('change', 'select.products', function(){
var selected = $(this).val();
//$(".price").val(selected);
$(this).closest('tr').find(".price").val(selected);
});
$(document).on('click', '.addProduct', function(){
var ele = $(this).parents('tr').clone();
ele.find('input[type=text]').val('');
$(this).parents('tr').after(ele);
});
$(document).on('click', '.delProduct', function(){
if($(this).parents('table').find('tr').length > 2) {
$(this).parents('tr').remove();
}
});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table id="addProducts" border="1">
<tr>
<td>POI</td>
<td>Quantity</td>
<td>Price</td>
<td>Product</td>
<td>Add Rows?</td>
</tr>
<tr>
<td>1</td>
<td><input size=25 type="text" id="lngbox" readonly=true/></td>
<td><input size=25 type="text" class="price" readonly=true/></td>
<td>
<select name="selRow0" class="products">
<option value="500">Product 1</option>
<option value="200">Product 2</option>
<option value="450">Product 3</option>
</select>
</td>
<td><input type="button" class="delProduct" value="Delete" /></td>
<td><input type="button" class="addProduct" value="AddMore" /></td>
</tr>
</table>
<div id="shw"></div>
更好的解决方案是为价格文本框生成具有不同id的整个tr,该文本框将匹配下拉选项id/name,然后根据该id进行更新。
如果您想要快速解决,请将更改事件替换为以下
$(document).on('change', 'select.products', function(event){
var selected = $(this).val();
$(event.target.parentNode.parentNode).find(".price")[0].value = selected;
});
相关文章:
- 根据组合框选择显示特定数据
- KnockoutJS-根据第一个组合框中选择的值填充第二个组合框
- CSS选择器与And操作组合'&&'
- 复选框选择组合
- 如何组合Datepicker&一个变量中的时间选择器
- 多个和单个选择/组合框的逻辑
- 如何重新加载具有组合框(选择)值的页面
- 使用 jquery 控制两个选择输入的组合值
- Extjs 4.2.1滚动到组合下拉列表中的选择
- 在jquery mobile中动态选择组合框
- jQuery选择器:当存在多个类时,选择特定的类组合
- 文本框和选择框组合单个文本中的值(第一个tb值,然后是sb值)
- 组合悬停和焦点选择器样式,但不能同时使用
- 当其中一个选择器是“窗口”时组合选择器
- 动态添加新的组合(选择)框
- 使用 json 的组合选择
- 启用/禁用组合选择的文本框
- Jquery组合选择的结果和一些变量's值仅适用于第一次选择更改
- 预加载CSS在我的组合选择
- Javascript在组合选择上隐藏表行