zoukankan      html  css  js  c++  java
  • HTML文本框,文本域,监听文本的实时变化

    概要:

      今天要做一个文本域的实时校验,实时文本变化,字符长度不能超过512。搞得有点麻烦。文本域的change事件,keyup事件等等都不合适,最后参考别人用计时器完成的,用计时器

    效率对于小文本,效率应该还是满高的。

    文章顺序:

    1.参考的资料

    2.我的(部分)代码,供参考

    1.参考的资料:

    http://ilewen.com/questions/1118

    这个问题我遇到过,开始使用的是监听keyup事件,但这样做有弊端,就是在用右键剪切调里面的内容时,因为没有键盘操作,所以无法触发keyup,同理 在粘贴时也存在该现象,于是在查找相关知识后,发现有一个oncut和onparste事件,这两个的确可以监听到鼠标的剪切,粘贴动作,可是无法得到剪 切后的值,也就是说他是在改变input内容之前触发的,得到的是未操作前的值,因此也不适用。最后通过一个定时器实现了该效果,需要利用 setInterval()函数。

    jQuery代码:

    $(document).ready(function(){
    
            var oldword=$('#textinput').val();
    
            var time=function(){
                var keyword=$('#textinput').val();
                  if(oldword!=keyword){
                    alert("asb");//参考
                    oldword=keyword;
                  }
                  else{
                      //写你自己要实现的功能
                  }
              }
    
              var intervalnum=null;
    
              $('#companysearch').focus(function(){
               intervalnum=setInterval(time,100);
              }).blur(function(){
               clearInterval(intervalnum);
              });
        });
    

    2.我的(部分)代码,供参考。代码写的不是很漂亮,望高手指点一二,谢谢。

      
    function check() {
      //根据判断这个flag ,你就能执行你的业务逻辑了。
    var
    flag = false;
      
      ......
      $(
    '.l-dialog-textarea').after('<p id="warning" style="color:red;padding-left:5px;">您还可以输入512个字</p>'); var oldword = $('.l-dialog-textarea').val();
      //定时器执行的程序
    var time = function () { var keyword = $('.l-dialog-textarea').val(); if (keyword != oldword){ var size = keyword.length; var cha = 0; if(size > 512){ keyword = keyword.substr(0, 512); $('.l-dialog-textarea').val(keyword); $('#warning').html('您还可以输入 0 个字'); }else{ cha = 512 - size; $('#warning').html('您还可以输入 ' + cha + ' 个字'); flag = true; } oldword = keyword; } } var interVal = null;
      //当某某控件得到焦点时,启动定时器;下面一个是关闭定时器。 $(
    '.l-dialog-textarea').focus(function(){ interVal = setInterval(time, 300); }); $('.l-dialog-textarea').blur(function(){ clearInterval(interVal); });

      .....

    }
  • 相关阅读:
    GIT
    JS常用功能
    prop checkbox 是否选中的问题。
    关于 未能加载文件或程序集“MySql.Web.v20 ...... 的问题
    Codeforces Round #535(div 3) 简要题解
    [Codeforces 600E] Lomsat gelral
    [PA 2011] Journeys
    [HNOI 2012] 永无乡
    [ONTAK2010] Peaks
    [BZOJ 3307] 雨天的尾巴
  • 原文地址:https://www.cnblogs.com/xxchao/p/3981945.html
Copyright © 2011-2022 走看看