oninput事件

oninput事件js监听input等表单输入框的变化事件oninput,手机页面开发中使用到文本框textarea输入字符监听文本框变化计算还可以输入多少字符,如果使用onkeyup的话是无法监听到输入法输入的文本变化的,复制粘贴也不能监听到,于是就用到了oninput事件来监听文本框value值的改变。由于是手机端页面没有考虑IE这货。js代码如下://计算文本输入统计(function

大家好,又见面了,我是你们的朋友全栈君。

js监听input等表单输入框的变化事件oninput,手机页面开发中使用到文本框textarea输入字符监听文本框变化计算还可以输入多少字符,如果使用onkeyup的话是无法监听到输入法输入的文本变化的,复制粘贴也不能监听到,于是就用到了oninput事件来监听文本框value值的改变。由于是手机端页面没有考虑IE 这货。

js代码如下:

//计算文本输入统计
(function textCoun(textarea,num){

    var sendTextarea     =     document.getElementById(textarea),
        text            =    sendTextarea.value,
        counter            =    text.length,
        sendCount         =     document.getElementById(“send-count”);
    
    sendCount.innerHTML = num-counter;    //显示初始状态还属于多少字
    
    //输入以后重新计算
    sendTextarea.oninput = function(){

        text    =    sendTextarea.value,
        counter    =    text.length;
        sendCount.innerHTML = num-counter;
    }

})(“send-textarea”,110)

关于这个事件的更多知识,可以阅读下面的文字,我们感谢写下下面文字的兄弟。懒人建站整理。

oninput,onpropertychange,onchange的用法

onchange触发事件必须满足两个条件:




a)当前对象属性改变,并且是由键盘或鼠标事件激发的(脚本触发无效)




b)当前对象失去焦点(onblur); 




onpropertychange的话,只要当前对象属性发生改变,都会触发事件,但是它是IE专属的;       




oninput是onpropertychange的非IE浏览器版本,支持firefox和opera等浏览器,但有一点不同,它绑定于对象时,并非该对象所有属性改变都能触发事件,它只在对象value值发生改变时奏效。




停止冒泡事件




if (e) //停止事件冒泡 e.stopPropagation(); 




else  window.event.cancelBubble = true;




执行上面的代码,单击输入框发现也会触发onpropertychange,输入一个值同样也会触发这个事件,这就证明了,只要有属性的值被修改就会触发该事件。




第二、既然我们发现了这个特点,那就会有一个问题了:当我们有时在输入框值发生改变时希望执行一个函数操作,但同时也要修改一个自定义的属性,这样onpropertychange就会被触发两次,这个可能并不是我们所希望的。


猜想一下,既然提供了这么一个属性,那一定应该能获取到是哪个属性被改变了。试着获取参数个数及参数内容。

js监听input等表单输入框的变化事件oninput

执行一下,发现有很多个属性,但仔细看我们可能会发现这么一个属性:propertyname,相信每个人都能猜到这个属性的意思了。对,这个就是用来获取哪个属性被修改的。

js监听input等表单输入框的变化事件oninput

再回到我们开始的问题js监听input等表单输入框的变化事件oninput,我们只需要判断是否是value被改变就ok了。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/132000.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • halcon算子详解_rdd算子

    halcon算子详解_rdd算子以上三个方法操作都是对RDD进行的聚合操作。1、reduce()与fold()方法是对同种元素类型数据的RDD进行操作,即必须同构。其返回值返回一个同样类型的新元素。valnums=Array(1,2,3,4,5,6,7,8,9)valnumsRdd=sc.parallelize(nums,3)valreduce=numsRdd.reduce((a,b)=>a+b)2、fo

    2025年7月8日
    2
  • pytest fixtures_jig和fixture的区别

    pytest fixtures_jig和fixture的区别fixture的优势Pytest的fixture相对于传统的xUnit的setup/teardown函数做了显著的改进:命名方式灵活,不局限于setup和teardown这几个命名conf

    2022年7月31日
    10
  • Vue响应式实现原理[通俗易懂]

    Vue响应式实现原理[通俗易懂]Vue响应式原理Vue是数据驱动视图实现双向绑定的一种前端框架,采用的是非入侵性的响应式系统,不需要采用新的语法(扩展语法或者新的数据结构)实现对象(model)和视图(view)的自动更新,数据层(Model)仅仅是普通的Javascript对象,当Modle更新后view层自动完成更新,同理view层修改会导致model层数据更新。双向绑定实现机制Vue的双向绑定实现机制核心:依赖于Object.defineProperty()实现数据劫持订阅模式Object.defineProper

    2022年5月18日
    44
  • Modelsim license破解中一个不可省略的步骤

    Modelsim license破解中一个不可省略的步骤安装modelsim没有一次顺利的。这一次是彻底搞清楚了.我安装的版本是modelsimse1-6410.1c,操作系统是win1064位.安装完了,按crack的说明去破解,总出现license问题.解决的办法是改变。安装目录中win64下面mgls.dll和mgls64.dll的只读属性。然后再重复一遍crack指导的方法。成功破解…

    2022年5月23日
    32
  • 建立本地数据库「建议收藏」

    建立本地数据库「建议收藏」首先下载安装MySQL,参考:http://www.runoob.com/mysql/mysql-install.html,安装完成后直接打开(安装过程中要求设置用户名和密码,此时输入的密码要记住,后面要使用)然后下载NavicatforMySQL,本人觉得这个比较简单,很适合初学者,安装完成之后点击File(文件)–新建文件,连接名可不填,主机名:localhost,用户名是安装MySQL…

    2022年6月1日
    30
  • [python机器学习及实践(2)]Sklearn实现朴素贝叶斯

    [python机器学习及实践(2)]Sklearn实现朴素贝叶斯

    2022年4月3日
    43

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号