Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

jQuery: selectionStart returns undefined

Situation

browser

Google Chtome 69

html

<textarea id="message" name="message">
    // input some messsage
</textarea>

js(jQuery)

$(function () {
  $("#message").on("keydown keyup keypress change", function () {
      //this part runs correctly
  })

  $('#message').on('keydown', function (e) {
    if ((e.wich && e.wich === 13) || (e.keyCode && e.keyCode === 13)) {
      var $textarea = $(this);
      var sentence = $textarea.val();
      var position = $textarea.selectionStart;
      var length = sentence.length;
      var before = sentence.substr(0, position);
      var after  = sentence.substr(position, length);
      sentence = before + "\n" + after;
    }
  });
});

When I input something in the #message textarea and push Enter key in the area, nothing would happen. According to Chrome developer tool, selectionStart method seems to return Undefined.

Needs

Enter key has been made disabled in this form page in order to avoid submitting the data mitakenly.

js

function fnCancelEnter()
{
  if (gCssUA.indexOf("WIN") != -1 && gCssUA.indexOf("MSIE") != -1) {
    if (window.event.keyCode == 13)
      {
        return false;
      }
  }
  return true;
}

However, in this textarea, I want to enable user to add a break line by pressing Enter key.

I'm sorry but I don't have much knowledge about jQuery and javascript. Please tell me how to do.

like image 201
Zuya Avatar asked May 18 '26 18:05

Zuya


1 Answers

Please replace $textarea.selectionStart by $textarea.get(0).selectionStart. Then try again.

like image 71
kntrieu Avatar answered May 20 '26 07:05

kntrieu