HTML中,用两种方式来表示文本框: input 单行文本、textarea 多行文本

那么在文本中存在哪些事件尼?

  1    select  都支持 但是其触发的时机不一样

IE9+ 、Safair 、Opera、Chorme、Firefox 当用户选择文件时,鼠标松开时触发
IE8以及其下 当用户选择文本时,就会触发

  

  window.onload = function() {
if (document.addEventListener) {
document.forms[0].elements[0].addEventListener("select", function () {
console.log("select" + this.value);
}, false)
} else {
document.forms[0].elements[0].attachEvent("onselect", function (event) {
console.log("ie select" + event.srcElement.value);
});
}
}

  2 取得选择的文本

    H5  添加的两个属性,

      selectionStart、selectionEnd 

    IE9+ 、Safair 、Opera、Chorme、Firefox 支持这两个属性

    IE8不支持这两个属性,但是提供 document.selection 对象, 其中保存着用户在整个文档范围内选择的文本信息;也就是说,无法确定用户选择的是页面中那个部位的文本。不过,在于select事件一起使用时候,可以假设是用虎选择了文本框中的文本,因此触发该事件。要取得选择的文本,首先必须创建一个范围,然后再将文本从其中取出来,如下。

    

   function getSelectedText(textbox){
if(typeof textbox.selectionStart == "number"){
return textbox.value.substr(textbox.selectionStart,textbox.selectionEnd);
}else if(document.selection){
return document.selection.createRange().text;
}
}

  3 选择部分内容

    setSelectionRange(start,end)  接收两个参数,并且不包括 end指定的内容

  IE9+ 、Safair 、Opera、Chorme、Firefox

    

    document.forms[0].elements[0].setSelectionRange(0,3); //

  document.forms[0].elements[0].setSelectionRange(0,2);//
document.forms[0].elements[0].setSelectionRange(0,1);//

  IE8以及其低版本中不支持 setSelctionRange方法,但是要想选择部分内容步骤如下:

    1   createTextRange 创建一个范围,并将其放在恰当的位置

    2   再通过 moveStart() 和 moveEnd()这两个范围方法将范围移动到位。

    3   调用moveStart、moveEnd之前必须使用 collapse()将范围折叠到文本框的开始位置。(此时在moveStart()将范围的起始点和终点移到了相同的位置 )

    4  接着再给moveEnd()传入要选择的字符总数即可。 最后一步就是使用范围的select()选择文本

movStart()  

@param {string} unit  character、 word 、 sentence、textedit 

@param {Number} [count]
@return {void}

moveEnd() 
    var textbox = document.forms[0].elements[0]; //who are you miss w
   var range = textbox.createTextRange();
range.collapse(true);
range.moveStart("word",0); // character 字符 || word 单词 || sentence 段落
range.moveEnd("word",3);  // who are you
range.select();

  当为 textedit 插入点(选择开始位置从结尾开始)移动到整个文本范围的结束处

var textbox = document.forms[0].elements[0]; //who are you miss w
var range = textbox.createTextRange();
range.collapse(true);
range.moveStart("textedit"); // character 字符 || word 单词 || sentence 段落
range.moveStart("character",-10); // miss wang
range.select();

  综合上面的方式可以给出跨浏览器的方式:

   function selectText(textbox,start,end){
if(textbox.setSelectionRange){
textbox.setSelectionRange(start,end)
}else{
var range = textbox.createTextRange();
range.collapse(true);
range.moveStart("character",start); // character 字符 || word 单词 || sentence 段落
range.moveStart("character",end-start)
range.select();
}
} @param {Node}  
@param {Number} 

@param {Number} [count]
@return {void}

  下面通过一个实例来验证一下:

  不管哪种情况下,必须是获得焦点之后执行

    function selectText(textbox,start,end){
if(textbox.setSelectionRange){
textbox.setSelectionRange(start,end)
}else{
var range = textbox.createTextRange();
range.collapse(true);
range.moveStart("character",start); // character 字符 || word 单词 || sentence 段落
range.moveStart("character",end - start)
range.select();
}
} selectText(textbox,0,10); //who are yo

  

文本框脚本 - select 事件的更多相关文章

  1. IE浏览器的脚本文本框监听事件

    一.IE8的文本框监听事件 由于在IE8所以input和propertychange都不能用,终于皇天不负有心人让我找到了这个:https://github.com/sophiebits/jquery ...

  2. 《JAVASCRIPT高级程序设计》表单基础知识和文本框脚本

    在HTML中,表单是由<form>元素来表示,在javascript中,表单对应的是HTMLFormElement类型,它具有一些独有的属性和方法: 一.表单基础知识 1.取得表单的方式 ...

  3. jQuery文本框中的事件应用

    jQuery文本框中的事件应用 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "ht ...

  4. Jquery文本框值改变事件兼容性

    Jquery文本框值改变事件(支持火狐.ie)   Jquery值改变事件支持火狐和ie浏览器,并且测试通过,绑定后台代码可以做成autocomplete控件. 具体代码列举如下: ? $(docum ...

  5. JQuery初始加载时注册文本框失去焦点事件

    在JQuery初始加载时注册文本框失去焦点事件 $(function(){ $('#文本框ID').blur(function(){ //对文本框内容进行处理 }); });

  6. JS事件 文本框内容改变事件(onchange)通过改变文本框的内容来触发onchange事件,同时执行被调用的程序。

    文本框内容改变事件(onchange) 通过改变文本框的内容来触发onchange事件,同时执行被调用的程序. 如下代码,当用户将文本框内的文字改变后,弹出对话框"您改变了文本内容!&quo ...

  7. 文本框的onchange事件,如何兼容各大浏览器

    在项目中经常会遇到对用户输入的数据进行实时校验,而不是等文本框失去焦点或用户手动点击校验. 首先分析下在哪些情况下文本框会产生change事件. 1.用户通过键盘入正常字符时: 2.用户通过键盘输入非 ...

  8. JS来推断文本框内容改变事件

       oninput,onpropertychange,onchange的使用方法 onchange触发事件必须满足两个条件: a)当前对象属性改变,而且是由键盘或鼠标事件激发的(脚本触发无效) b) ...

  9. js监听文本框值变化事件,就oninput & onpropertychange & onkeyup & onchange的区别

    在Web前端项目中实时监听文本框的值变化是非常常见的功能,通常最简单最容易想到的是onkeyup和onchange事件,但是在使用onkeyup来监听键盘事件的时候,监听不到鼠标右键的粘贴.复制的操作 ...

随机推荐

  1. (转)sql中 in 、not in 、exists、not exists 用法和差别

    exists (sql 返回结果集为真)  not exists (sql 不返回结果集为真)  如下:  表A  ID NAME  1    A1  2    A2  3  A3 表B  ID AI ...

  2. React-nwb的使用

    一.查看nwb的版本 nwb -v 二.创建一个react项目 nwb new react-app react-demo 三.启动项目 nwb serve

  3. 此项目的默认Web访问模式设置为文件共享, 但是无法从路径(此为转贴)

    故障现象: 当你打开ASP.NET Web项目时,如果出现这样的错误提示:提示窗口标题: Web访问失败提示内容: 此项目的默认Web访问模式设置为文件共享, 但是无法从路径“...”打开“...”处 ...

  4. UI基础视图----UILabel总结

    UILabel是UIKit框架中非常常用的视图类,是UIView的子类,是UIWindow,UIImageView等的兄弟类,因为继承自UIView,所以继承了UIView中的属性和方法,大部分都可以 ...

  5. Objective-C 数组、可变数组

    数组的使用方式 下面是数组:类型NSArray #import <UIKit/UIKit.h> #import "AppDelegate.h" int main(int ...

  6. 6、统计solr目录索引信息

    package com.main.java.solr.statistics; import org.apache.lucene.document.Document; import org.apache ...

  7. Codeforces round #353div2 C

    题目来源:http://acm.hust.edu.cn/vjudge/contest/view.action?cid=117863#problem/C 题目大意:给你n个数字,代表这个人在n个银行里面 ...

  8. 在shell中运行以不同方式运行脚本

    在shell当中,可以有3中方式运行脚本: 1 . ./script_name 或者source ./script_name 2 直接./script_name 3 ./script_name &am ...

  9. 用phpMyAdmin修改mysql数据库密码

    1初始数据库密码为空. 2第一步,点击phpMyAdmin里的用户选项. 3选择root localhost用户名,点击编辑权限. 4此时会出来修改权限的页面,里面可以设置的选项还是比较多的,暂时不管 ...

  10. js判断是否为空的代码

    方法一: var keyVal= $("#key").val(); if(keyVal==undefined || keyVal=="" || keyVal== ...