添加和删​​除动态文本框

时间:2013-04-11 14:14:47

标签: jquery

我有以下代码,可以在我的页面中添加文本区域。它还附加一个“删除”按钮,以便用户可以删除文本区域。问题是,当用户单击文本区域中的删除按钮和文本区域时,文本区域将被删除...我不确定为什么会发生这种情况。

有人可以快速查看我的代码吗?也许我错过了什么。

谢谢!

$("#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>" +

              '&nbsp;&nbsp;<input type="button" value="Remove" class="removeTools">').click(function () {
                   $(this).remove();
                   counter--;
                });
        newTextBoxDiv.appendTo("#ToolsGroup");
        counter++;
    });

3 个答案:

答案 0 :(得分:2)

使用此代码:

newTextBoxDiv.after().html(
          "<label></label>" +
          "<textarea id='tbTools'" + counter + "' name='txtTools' rows='3' cols='50'>    </textarea>" +

          '&nbsp;&nbsp;<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>" +

      '&nbsp;&nbsp;<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>" +

          '&nbsp;&nbsp;<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>" +

        '&nbsp;&nbsp;<input type="button" value="Remove" class="removeTools" onclick="removeTextArea(this);">');
    newTextBoxDiv.appendTo("#ToolsGroup");
    counter++;
});

function removeTextArea(textAreaElement) {
    $(textAreaElement).parent().remove();
    counter--;
}