我有以下代码,可以在我的页面中添加文本区域。它还附加一个“删除”按钮,以便用户可以删除文本区域。问题是,当用户单击文本区域中的删除按钮和文本区域时,文本区域将被删除...我不确定为什么会发生这种情况。
有人可以快速查看我的代码吗?也许我错过了什么。
谢谢!
$("#btnAddTools").click(function () {
if(counter>10){
alert("Only 10 learning Tools allowed per page.");
return false;
}
var newTextBoxDiv = $(document.createElement('div')).attr("id", 'Tools' + counter);
newTextBoxDiv.after().html(
"<label></label>" +
"<textarea id='tbTools'" + counter + "' name='txtTools' rows='3' cols='50'></textarea>" +
' <input type="button" value="Remove" class="removeTools">').click(function () {
$(this).remove();
counter--;
});
newTextBoxDiv.appendTo("#ToolsGroup");
counter++;
});
答案 0 :(得分:2)
使用此代码:
newTextBoxDiv.after().html(
"<label></label>" +
"<textarea id='tbTools'" + counter + "' name='txtTools' rows='3' cols='50'> </textarea>" +
' <input type="button" value="Remove" class="removeTools">').click(function () {
您将点击功能应用于按钮,标签和整个TextArea。
一个解决方法是创建一个单独的函数并使用onClick代码中的按钮。
这样的事情:
newTextBoxDiv.after().html(
"<label></label>" +
"<textarea id='tbTools'" + counter + "' name='txtTools' rows='3' cols='50'> </textarea>" +
' <input type="button" value="Remove" onClick="functionName(param)" class="removeTools">');
然后有一个单独的功能:
function functionName(param) {
//code
}
答案 1 :(得分:1)
您可以使用此代码
var counter=0;
$("#btnAddTools").click(function () {
if(counter>10){
alert("Only 10 learning Tools allowed per page.");
return false;
}
var newTextBoxDiv = $(document.createElement('div')).attr("id", 'Tools' + counter);
newTextBoxDiv.after().html(
"<label></label>" +
"<textarea id='tbTools'" + counter + "' name='txtTools' rows='3' cols='50'></textarea>" +
' <input type="button" value="Remove" class="removeTools">');
newTextBoxDiv.appendTo("#ToolsGroup");
counter++;
});
$(document).on('click','.removeTools'.function(){
$(this).prev().remove();
});
答案 2 :(得分:1)
您的代码中的问题是您将click事件添加到您添加的整个新html中。
请检查此新代码
var counter = 0;
$("#btnAddTools").click(function () {
if (counter > 10) {
alert("Only 10 learning Tools allowed per page.");
return false;
}
var newTextBoxDiv = $(document.createElement('div')).attr("id", 'Tools' + counter);
newTextBoxDiv.after().html(
"<label></label>" +
"<textarea id='tbTools'" + counter + "' name='txtTools' rows='3' cols='50'></textarea>" +
' <input type="button" value="Remove" class="removeTools" onclick="removeTextArea(this);">');
newTextBoxDiv.appendTo("#ToolsGroup");
counter++;
});
function removeTextArea(textAreaElement) {
$(textAreaElement).parent().remove();
counter--;
}