【发布时间】:2014-03-05 18:47:38
【问题描述】:
我想创建一个允许动态添加附加输入的表单,并且输入的每一行都有一个按钮,单击该按钮应显示可选的附加输入。
很遗憾,我似乎无法为动态生成的按钮创建一个 onclick 处理程序来执行任何操作
感谢您提供任何线索
Here is a fiddle which demonstrates the problem
这里的代码与小提琴中的代码相同:
css 和 javascript:...
<style>
#time_est_input {
display: none
}
</style>
<script>
$(document).ready(function () {
$("#button-time-est").click(function () {
$("#time_est_input").toggle();
});
});
var g_ = new Object();
g_.counter = 1;
function addAnotherItem() {
var input = document.createElement("input");
input.title = "item";
input.type = "text";
input.id = "item" + g_.counter.toString();
input.value = "";
var inputCat = document.createElement("input");
inputCat.title = "category";
inputCat.type = "text";
inputCat.id = "category" + g_.counter.toString();
inputCat.value = "";
var tesid = "time_est_input" + g_.counter.toString();
var timeEstSpan = document.createElement("span");
timeEstSpan.id = tesid;
timeEstSpan.style.cssText = "display:none;";
var timeEstButton = document.createElement("input");
timeEstButton.title = "Add Time Estimate";
timeEstButton.type = "button";
timeEstButton.value = "+";
timeEstButton.id = "time_est_button" + g_.counter.toString();
timeEstButton.setAttribute("myspan", tesid);
timeEstButton.onClick= function() {
var tesid = this.getAttribute('myspan');
var myspan = $(tesid);
myspan.toggle();
};
var inputTimeEst = document.createElement("input");
inputTimeEst.title = "time estimate";
inputTimeEst.type = "text";
inputTimeEst.id = "time_est" + g_.counter.toString();
inputTimeEst.value = "";
timeEstSpan.appendChild(inputTimeEst);
var br = document.createElement("br");
$('#form_list_parent').append(input);
$('#form_list_parent').append(inputCat);
$('#form_list_parent').append(timeEstButton);
$('#form_list_parent').append(timeEstSpan);
$('#form_list_parent').append(br);
$(input).focus();
g_.counter += 1;
}
</script>
HTML:...
Desired behavior:<br>
<input type=text id="item" title="item" autofocus></input>
<input type=text id="category" title="category"></input>
<input title="add time estimate" type="button" id="button-time-est" value="+">
<span id="time_est_input">
<input type='text' id='time_est' title="time estimate"/>
</span>
<hr/>
Dynamically generated inputs with buttons don't behave as above:<br>
<p id="form_list_parent"></p>
<input type="button" id="additembutton" value="add item" onclick="addAnotherItem()" />
<br/>
【问题讨论】:
标签: jquery button dynamic onclick toggle