-1

我无法弄清楚如何删除文本区域中的单个条目(最后一项)。非常感谢任何帮助/建议。这是一个jsFiddle示例。

这是我的 jQuery:

jQuery(function() { 
    var addName = jQuery('input.addName'),
            addLanId = jQuery('input.addLanId'),
            addPerId = jQuery('input.addPersonId'),
            textArea = jQuery('textarea.addPersonInfo');

    addPerId.keyup(function() {
        this.value = this.value.replace(/[^0-9\$]/g,'');            
    });

    jQuery('.btn-add').on('click', function() {
        var addNameValue = addName.val(),
            addLanIdValue = addLanId.val(),
            addPerIdValue = addPerId.val();

        if (addNameValue == '' || addLanIdValue == '' || addPerIdValue == ''){
            return false;
        }

         var elFormat = addNameValue + " (LAN ID: " + addLanIdValue + ") (Person ID: " + addPerIdValue + ")\n",
            addEl = jQuery(textArea).append(elFormat);
            addName.val('');
            addLanId.val('');
            addPerId.val('');   


    }); 

    jQuery('.btn-delete').on('click', function() {              
        jQuery('.addPersonInfo:last-child').remove();

    });     


});
4

1 回答 1

0

如果我理解正确,您的文本区域中有文本,您需要删除它的最后一行。您可以获取 textarea 的内容,使用 javascript split 方法将其拆分,删除最后一行并将它们连接在一起:

<textarea id="t">
line 1
line 2
</textarea>

<script type="text/javascript">

  lines = $("#t").val().split("\n");

  // remove the last line
  lines.pop();

  // re-assign it to the textarea
  $("#t").val(lines.join());

</script>

您需要检查的一件事是,在弹出之后,您仍然有要加入的数组中的元素。我相信如果您弹出一个包含 2 个或更少项目的数组,则该数组可能会更改为一个字符串。

上面的版本没有考虑回车时的回车。试试这个:

<script type="text/javascript">

  var s="";

  lines = $("#t").val().split("\n");

  // build a string with all elements, except the last
  for(i=0;i<lines.length-1;i++){ 
    s+=lines[i] + "\n"
  }

  // re-assign it to the textarea
  $("#t").val(s);

</script>

您需要注意 textarea 末尾仅包含“\n”的行。

于 2013-06-12T20:20:16.920 回答