【问题标题】:Get the value of dynamically added select box and text box in jquery获取jquery中动态添加的选择框和文本框的值
【发布时间】:2014-12-24 20:21:30
【问题描述】:

我对 jQuery 很陌生,在这里我需要添加/删除一组文本框并通过单击按钮连续选择框。 添加时我必须用选项填充相同的选择框。 我已经通过以下代码实现了添加和删除。

============Add=================

var i = 1; 
$("‪#‎add‬").click(function() {
i++;
$(".normal-tble tbody tr:first").clone().find("select,input").each(function() {
var tempId = $(this).attr("id");
$(this).attr("id",$(this).attr("id")+"_"+(i))
var newID = $(this).attr("id");
}).end().appendTo("table");
});
=============Remove===============
$("table.normal-tble").on("click", "‪#‎remove‬", function (event) {
$(this).closest("tr").remove();
i -= 1
});
================code appending===================
<tbody>
<tr class="second">
<td style="text-align:left;"><form:select path="category" class="slt-tbl-small">
<form:option label="Select" value='0' />
<form:options itemLabel="categoryName" itemValue="category" items="${CategoryList}" />
</form:select>
</td>
<td style="text-align:left;"><form:select path="areaID" class="slt-tbl-small">
<form:option label="Select" value='0' />
</form:select>
</td>
<td style="text-align:left;"><form:select path="subAreaID" class="slt-tbl-small">
<form:option label="Select" value='0' />
</form:select>
</td>
<td style="text-align:left;"><form:input path="quantity" class="tfl-tbl-small"/></td>
<td style="text-align:left;"><form:input path="availableBlocks" class="tfl-tbl-small"/></td>
<td style="text-align:left;"><form:input path="utilization" class="tfl-tbl-small"/></td>
<td style="text-align:left;"><form:input path="blkNumComment" class="tfl-small"/></td>
<td style="text-align:left;"><img src="<c:url value="/resources/images/edit.png"/>" width="14" height="13" alt="edit"></td>
<td style="text-align:left;"><img src="<c:url value="/resources/images/edit.png"/>" width="14" height="13" alt="edit" id = "remove"></td>
<td></td>
</tr> 
</tbody>
==================Fetch Data=================
$(this).change(function() {
var value = $(this).val();//this value is not coming for dynamically added select box.
});
});
===================================

基于第一个选择框更改,我必须在其他选择框和文本框中填充值。 1.如何获取动态添加的选择框的值? 2.克隆选择框和文本框后,即使它与以前的相同,也无法获取值和id。 3.是因为clone()吗?

请帮我解决这个问题

【问题讨论】:

  • 确保您委派事件以说明将在初始页面加载代码运行后添加的元素。或者,确保在插入新元素后立即将它们绑定到新元素。委派更容易管理。通读 jQuery on() docs

标签: jquery spring-mvc


【解决方案1】:

使 onchange 处理程序成为一个命名函数:

function onChange() {
    var value = $(this).val();
    //...
}
$(this).change(onChange);

然后在您的添加函数中,将相同的处理程序添加到新创建的元素:

$(".normal-tble tbody tr:first").clone().find("select,input").each(function() {
    ///...
    $(this).change(onChange);
}).end().appendTo("table");

关于您的其他问题:
您不应将两个事件处理程序都分配给您的 select+input+img。分开做,像这样:

var $row = $(".normal-tble tbody tr:first").clone();
$row.find("select,input").change(onChange); 
$row.find("img").click(onClick);
$row.appendTo("table");

【讨论】:

  • 从上面的代码中我有一个图像,点击它我必须填充一些日期。为此我在克隆时添加了点击事件。像这样 $(this).change(onChange) .但它与我的 onchange 冲突。我们如何避免这种冲突?。
  • 如果没有看到您的实际代码,我不确定我是否理解您的问题。您可以编辑您的问题,或发布一个新问题。
  • 动态添加选择框、文本框和图片冲突事件
  • 一个是change(onChange),另一个是click(onClick)。它们不应该冲突。
  • 我需要动态创建 3 种类型的元素,选择框、文本框和 img。我必须通过单击其中一个 img 来根据选择框和文本的值打开一个弹出窗口。所以我在创建时添加了两个事件,例如 $(".normal-tble tbody tr:first").clone().find("select,input,img").each(function() { $(this).click (onClick); $(this).change(onChange); }).end().appendTo("table");
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-06-17
  • 2019-11-08
  • 1970-01-01
  • 2019-03-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多