文本框脚本 - select 事件

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

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

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

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

  

 1  window.onload = function() {
 2         if (document.addEventListener) {
 3             document.forms[0].elements[0].addEventListener("select", function () {
 4                 console.log("select" + this.value);
 5             }, false)
 6         } else {
 7             document.forms[0].elements[0].attachEvent("onselect", function (event) {
 8                 console.log("ie select" + event.srcElement.value);
 9             });
10         }
11     }

  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); //123

  document.forms[0].elements[0].setSelectionRange(0,2);//12
    document.forms[0].elements[0].setSelectionRange(0,1);//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

  

时间: 2024-08-05 15:24:32

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

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

在HTML中,表单是由<form>元素来表示,在javascript中,表单对应的是HTMLFormElement类型,它具有一些独有的属性和方法: 一.表单基础知识 1.取得表单的方式 var form = document.getElementById("form1");//取得页面中id=form1的元素 var form1 = document.forms[0];//取得页面中的第一个表单 var myform = document.forms["myFo

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

   oninput,onpropertychange,onchange的使用方法 onchange触发事件必须满足两个条件: a)当前对象属性改变,而且是由键盘或鼠标事件激发的(脚本触发无效) b)当前对象失去焦点(onblur):    onpropertychange的话,仅仅要当前对象属性发生改变,都会触发事件,可是它是IE专属的: oninput是onpropertychange的非IE浏览器版本号,支持firefox和opera等浏览器,但有一点不同,它绑定于对象时,并不是该对象全部

在GridView控件内文本框实现TextChanged事件

本篇是教你实现GridView控件内的TextBox文本框实现自身的TextChanged事件.由于某些功能的需求,GridView控件内嵌TextBox,当TextBox值发生变化时,触发TextChanged事件. 在.aspx网页内,Insus.NET尝试写一个GridView,算了,我们还想在Ajax环境之下运行: 为了实现TextChanged事件,得需要在GridView控件中写OnRowCreated事件,记住是OnRowCreated事件,而不是OnRowDataBound事件.

jQuery文本框中的事件应用

jQuery文本框中的事件应用 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>jquer

禁止input文本框输入select无法选择

readonly.disabled.autocomplete readonly表示此域的值不可修改,仅可与 type="text" 配合使用,可复制,可选择,可以接收焦点,后台会接收到传值. 代码如下:<input type="text" name="en_name" readonly="readonly" /> disabled表示禁用input元素,不可编辑,不可复制,不可选择,不能接收焦点,后台也不会接收到传

My97DatePicker日历的平面显示,不是文本框点击事件后显示

二. 功能及示例 2. 特色功能 平面显示 日期控件支持平面显示功能,只要设置一下eCont属性就可以把它当作日历来使用了,无需触发条件,直接显示在页面上 示例2-1 平面显示演示 <div id="div1"></div> <script> WdatePicker({eCont:'div1',onpicked:function(dp){alert('你选择的日期是:'+dp.cal.getDateStr())}}) </script>

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

在项目中经常会遇到对用户输入的数据进行实时校验,而不是等文本框失去焦点或用户手动点击校验. 首先分析下在哪些情况下文本框会产生change事件. 1.用户通过键盘入正常字符时: 2.用户通过键盘输入非正常字符时 ctrl+v ctrl+x ctrl+z delete Backspace 等操作时: 3.用户通过鼠标进行粘贴.剪切.撤消等操作时: <body> <input id="text1" type="text"/> <div id

文本框脚本 - 过滤输入

过滤输入经常应用的场合是,限定文本框的输入特定数据,或者输入特定格式的数据. 当输入那离不开键盘,当然也不开这三个事件: keydown keypress keyup 先来看看这些事件的顺序: textbox.addEventListener("keyup",function(){ console.log("keyup"); //3 },false); textbox.addEventListener("keydown",function(){

jQuery文本框(input textare)事件绑定方法教程

jquery 的事件绑定已经用on替换了原来的bind,接下来为大家分享下bind的使用方法及input textare事件.目前1.7以上,jquery?的事件绑定已经用on替换了原来的bind,接下来为大家介绍下bind的使用方法及input textare事件,感兴趣的朋友可以参考下 (1)jquery 绑定事件 目前1.7以上,jquery的事件绑定已经用on替换了原来的bind: 区别:(个人理解)bind是一次绑定事件到每一个子节点:on是只绑定到父节点,然后冒泡到各个子节点: 用法