Thinking on hiring me?

Please read

Fernando Guillén

a Freelance Web Developer

cabecera decorativa

software development as an artistic expression

Archive for Julio, 2009

Jueves, Julio 9th, 2009

jQuery: deleting the last word from textarea’s cursor

Following with the completor suggestor I was playing, I had the need to delete the last word from cursor before the completor writes the suggestion selected.

Thanks to the previous function textarea.lastWord() it was  very easy:

jQuery.fn.deleteLastWord = function() {
  this.each(function(){
    if (this.selectionStart || this.selectionStart == '0') {
      var startPos = this.selectionStart;
      var endPos = this.selectionEnd;
      var scrollTop = this.scrollTop;
 
      var lastWord = $(this).lastWord();
      startPos = startPos - lastWord.length;
 
      this.value =
          this.value.substring(0, startPos) +
          this.value.substring(endPos, this.value.length);
      this.focus();
      this.selectionStart = startPos;
      this.selectionEnd = startPos;
      this.scrollTop = scrollTop;
    } else {
      alert("deleteLastWord not supported on this navigator");
    }
  });
};

Example of use:

$('#my_textarea').deleteLastWord();

Don’t copy and paste from here, WP does weird stuff with code, download from here: http://gist.github.com/143822

This script is almost not tested, it works for me on FireFox 3.0.11 and Safari 4.0.1, so use it under your own responsability.

Jueves, Julio 9th, 2009

jQuery: returning the last word from textarea’s cursor

I was enjoying trying to develop a kind of completor suggestor on a textarea, I wanted it to jump when the tab key was pressed, that what easy with capturing the keydown event and the help of event.preventDefault.

But the thing what wasn’t such easy was the capturing the last word on the textarea from the cursor.

But with the help of the code of the insertAtCaret function I was abble to obtain it:

jQuery.fn.lastWord = function() {
  var buffer = '';
 
  this.each(function(){
    if (this.selectionStart || this.selectionStart == '0') {
      var startPos = this.selectionStart;
      var endPos = this.selectionEnd;
      var scrollTop = this.scrollTop;
 
      var index = 0;
      var new_char = '';
 
      do{
        index += 1;
        buffer = new_char + buffer;
        new_char = this.value.substr(startPos - index, 1);
      } while( new_char.search( /^(\w|\.)$/|> ) != -1 )
 
    } else {
      alert("lastWord not supported on this navigator");
    }
  });
 
  return buffer;
};

Example of use:

alert( "last word from cursor: " + $('#my_textarea').lastWord() );

Don’t copy and paste from here, WP does weird stuff with code, download from here: http://gist.github.com/143808

This script is almost not tested, it works for me on FireFox 3.0.11 and Safari 4.0.1, so use it under your own responsability.

a Freelance Web Developer is proudly powered by WordPress
Entries (RSS) and Comments (RSS).

Creative Commons License
Fernando Guillen's blog by Fernando Guillen is licensed under a Creative Commons Attribution-NoDerivs 3.0 Unported License.