[whatwg] Request for new DOM property textarea.selectionText

On Mon, May 10, 2010 at 11:50 AM, Daniel Glazman
<daniel.glazman at disruptive-innovations.com> wrote:
> Le 10/05/10 07:11, Biju a ?crit :
>
>> Can we have a new DOM property textarea.selectionText
>> which can be used to set/get selection text of a TEXTAREA/INPUT type=text.
>>
>> Current method is complicated and varies between IE and Firefox
>
> Oh!!! As a read/write property, right?

Yes,
But Ojan suggested another option, I liked that too.

Both have advantages

Option 1 (textobj.selectionText) advantages
* No need for web developer to provide selection start/end
* Automatically select the newly inserted text,
   (as most time that is what you want)
* No need for web developer to calculate selection start/end for
setting it after text insert
* preserve scroll
* Has both Getter and Setter

Option 2 (textobj.setRangeText(start, end, text)); advantages
* Independent of selection, web developer can change text at any range
   with out affecting selection
* Web developer has more options with it.
* preserve scroll


So I want to merge both suggestion, with a new signature,
also trying to reduce coding for web developer "less code less bug"

textobj.setRangeText(newtext, start, end, cursorpos)

parameters:
newtext
 - optional parameter
 - new text that will replace existing
 - if missing/null/undefined/NaN then default to ""

start
 - optional parameter
 - starting position of the original textobj text that need to be replaced
 - if missing/null/undefined/NaN then default to textobj.selectionStart
 - negative value make start position from last character in the text content

end
 - optional parameter
 - ending position of the original textobj text that need to be replaced
 - if missing/null/undefined/NaN then default to textobj.selectionEnd
 - negative value make end position from last character

cursorpos
 - optional parameter
 - if missing/null/undefined/NaN then default to 0
 - what should happen to cursor/selection after text insert, its values are
 - - 0 - select the newly inserted text
 - - 1 - place cursor at beginning of inserted text
 - - 2 - place cursor at the end of inserted text
 - - 3 - keep selection unaffected
* issue, when value is 3 what should we do when setRangeText is replacing text
which has some parts selected and some other parts unselected


so if somebody want replace selection text it is just
     textobj.setRangeText(newtext);
which is almost same as my original proposal, and
     textobj.setRangeText();
will blank a selection

We could also add a getter method, also with optional parameters
     textobj.getRangeText(start, end)
so,
textobj.getRangeText() gives current selection
textobj.getRangeText(0) gives from start of text to current selection end
textobj.getRangeText(null, -1) gives from current selection start to end of text

Received on Tuesday, 11 May 2010 20:47:42 UTC