如何防止在按 Enter 键时从文本区域中删除文本?

How can I prevent that text is removed from textarea on press Enter-Key?

当我在粉红色文本框中写入新文本并按下 enter 时,新文本会在该文本框中更新。

但是,如果我只是在粉红色的文本框内单击而不做任何更改,然后按 enter,那么原先的文本将被删除。它不应该被删除。如果我不做任何更改,那么已经存在的文本应该继续存在。

function editable() {

        $(document).on('click', '.editable', function (event) {

            var element_height = $(this).closest( "td" ).height();
            var element_width = $(this).closest( "td" ).width();
            if ($(this).children("textarea").length > 0)
                return false;
            var tdObj = $(this);
            var preText = tdObj.html();
       var inputObj = $("<textarea>");
            tdObj.html("");
            inputObj.width(tdObj.width())
                .height(tdObj.height())
                .css({
                border: "0px",
                height: element_height,
                width: element_width,
            })
                .val($.trim(preText))
                .appendTo(tdObj)
                .trigger("focus")
                .trigger("select");
            inputObj.keyup(function (event) {
                
                if (13 == event.which) { // press ENTER-key
 
                    var datagroup = tdObj.data("group");
                    var dataid = tdObj.data("id");
                    var datacell = tdObj.data("cell");
                    var text = $(this).val();
   
                    
                    $("#" + datacell + "").val(text);
           
                    var number = text.replace(/,/g, ".");
                    tdObj.data('value', number);
                    var newData = tdObj.data("value")
                    tdObj.html(text);
            

                } else if (27 == event.which) { // press ESC-key
                    tdObj.html(preText);
                }
            });
            inputObj.click(function () {
                return false;
            });
            inputObj.blur(function (event) {
                tdObj.html(preText);
            });
        });
    }
    editable();
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>


<table>
  <thead>
    <tr style="background-color: #f9f9f9">
    <th class="td_name">Animal</th>
    </tr>
  </thead>
  <tr>
    <td class="td_description" style="background-color:pink">
      <input class="description_input" name="description[]" type="hidden" value="cat">
      <div style="width:100%; min-height:30px;" class="description editable td_textarea" data-value="cat">cat
      </div>
    </td>
  </tr>
</table>

删除 .trigger('select') .

已更新

function editable() {

        $(document).on('click', '.editable', function (event) {

            var element_height = $(this).closest( "td" ).height();
            var element_width = $(this).closest( "td" ).width();
            if ($(this).children("textarea").length > 0)
                return false;
            var tdObj = $(this);
            var preText = tdObj.html();
       var inputObj = $("<textarea>");
            tdObj.html("");
            inputObj.width(tdObj.width())
                .height(tdObj.height())
                .css({
                border: "0px",
                height: element_height,
                width: element_width,
            })
                .val($.trim(preText))
                .appendTo(tdObj)
                .trigger("focus")
                .trigger("select")
               
            inputObj.keydown(function (event) {
                
                if (13 == event.which) { // press ENTER-key
                    var datagroup = tdObj.data("group");
                    var dataid = tdObj.data("id");
                    var datacell = tdObj.data("cell");
                    var text = $(this).val();
   
                    
                    $("#" + datacell + "").val(text);
           
                    var number = text.replace(/,/g, ".");
                    tdObj.data('value', number);
                    var newData = tdObj.data("value")
                    tdObj.html(text);
            

                } else if (27 == event.which) { // press ESC-key
                    tdObj.html(preText);
                }
            });
            inputObj.click(function () {
                return false;
            });
            inputObj.blur(function (event) {
                tdObj.html(preText);
            });
        });
    }
    editable();
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>


<table>
  <thead>
    <tr style="background-color: #f9f9f9">
    <th class="td_name">Animal</th>
    </tr>
  </thead>
  <tr>
    <td class="td_description" style="background-color:pink">
      <input class="description_input" name="description[]" type="hidden" value="cat">
      <div style="width:100%; min-height:30px;" class="description editable td_textarea" data-value="cat">cat
      </div>
    </td>
  </tr>
</table>

尝试使用 keydown 而不是 keyup

function editable() {

        $(document).on('click', '.editable', function (event) {

            var element_height = $(this).closest( "td" ).height();
            var element_width = $(this).closest( "td" ).width();
            if ($(this).children("textarea").length > 0)
                return false;
            var tdObj = $(this);
            var preText = tdObj.html();
       var inputObj = $("<textarea>");
            tdObj.html("");
            inputObj.width(tdObj.width())
                .height(tdObj.height())
                .css({
                border: "0px",
                height: element_height,
                width: element_width,
            })
                .val($.trim(preText))
                .appendTo(tdObj)
                .trigger("focus")
                .trigger("select")
               
            inputObj.keydown(function (event) {
                
                if (13 == event.which) { // press ENTER-key
                    var datagroup = tdObj.data("group");
                    var dataid = tdObj.data("id");
                    var datacell = tdObj.data("cell");
                    var text = $(this).val();
   
                    
                    $("#" + datacell + "").val(text);
           
                    var number = text.replace(/,/g, ".");
                    tdObj.data('value', number);
                    var newData = tdObj.data("value")
                    tdObj.html(text);
            

                } else if (27 == event.which) { // press ESC-key
                    tdObj.html(preText);
                }
            });
            inputObj.click(function () {
                return false;
            });
            inputObj.blur(function (event) {
                tdObj.html(preText);
            });
        });
    }
    editable();
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>


<table>
  <thead>
    <tr style="background-color: #f9f9f9">
    <th class="td_name">Animal</th>
    </tr>
  </thead>
  <tr>
    <td class="td_description" style="background-color:pink">
      <input class="description_input" name="description[]" type="hidden" value="cat">
      <div style="width:100%; min-height:30px;" class="description editable td_textarea" data-value="cat">cat
      </div>
    </td>
  </tr>
</table>