【问题标题】:Events after keypresses (jquery)按键后的事件(jquery)
【发布时间】:2012-05-10 19:02:07
【问题描述】:

我有一个文本区域。用户在 textarea 中输入 X 个字符后,我希望触发一些不同的事件。

  • 将输入的前 X 个字符附加到另一个文本字段中。
  • 扩展 textarea 以提供更多空间继续输入

我知道我可以在 jquery 中使用按键事件,但是在输入 25 个字符后如何触发事件?

我正在尝试这个:

$('#post-content-field').keyup(function () {
$('#post-title-field').val($("#post-content-field").val()).trigger('change');
                            });

【问题讨论】:

    标签: jquery events keypress


    【解决方案1】:

    您可以在每次按键后检查textarea值的.length。如果大于等于25,抓取前几个字符,增加textarea高度。

    $("textarea.affectMe").on("keyup", function(){
      if ( this.value.length >= 25 && !$(this).hasClass("done") ) {
        $(this).addClass("done");
        $(".threeChars").val( this.value.substring(0,25) );
      }
    });
    

    注意,我正在向 textarea 添加一个类,因此当长度大于 25 时,我们不会在每次按键后一遍又一遍地这样做。

    演示:http://jsbin.com/afonar/edit#javascript,html

    【讨论】:

    • 这正是我想做的。知道如何写这一切是我的挂念。
    • 非常感谢!这正是我想要的。非常感谢!
    • @user179846 我很高兴这个答案对你有用。如果它解决了您的问题,请考虑接受它。我注意到您当前选择的答案仍然给您留下了疑问。
    • 哦,对了。没想到我只能选择一个正确的答案。你们俩都帮了我一些忙,但你的解决方案是我确切问题的最佳解决方案。再次感谢!期待展示我的想法
    • 这真的很好,我在 1.7 (.on) 之前的旧版本的 jQuery 中需要它,所以我将其更改为 .bind,效果很好。
    【解决方案2】:

    使用jquery和下面的countChar函数

     <script src="http://code.jquery.com/jquery-1.5.js"></script>
        <script>
            function countChar(val){
                                    var len = val.value.length;
                                    if (len >= 500) {
                                        val.value = val.value.substring(0, 500);
                                    }else {
                                        $('#charNum').text(500 - len);
                                    }
            };
        </script>
    

    在 HTML 中调用类似

    的函数
    <textarea id="field" onkeyup="countChar(this)"></textarea>
    <div id="charNum">
    </div>
    

    div 将显示字符数。你可以在函数内部做任何事情

    参考:Count characters in textarea

    【讨论】:

    • 好的,可以。它允许我在 X 个字符之后触发事件。 但是:我不能输入超过 X 个字符,并且它会不断替换另一个字段中的文本。我怎样才能让它只更换一次。
    【解决方案3】:

    这是供您参考的,您可以做任何您喜欢的事情。 删除阻止您添加更多文本的行

    参考下面

    function countChar(val){
        var len = val.value.length;
         $('#charNum').text(len);
         if (len >= 500) {
                         // Copy
          }else {
                //DO anything
          }
    };
    

    【讨论】:

    • 啊,现在可以了。我现在看到了如何测试长度,然后使用 if/else 语句来触发事件。我怎样才能将前 25 个字符复制到另一个字段一次?
    • 函数内部写:str = val.value.substring(0, 25);然后将其复制到您想要的任何元素。
    【解决方案4】:
    $('textarea').bind('keyup', function(e){
        if(e.target.value.length === 25) {
            // do stuff
        }
    });
    

    【讨论】:

      猜你喜欢
      • 2012-01-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-05
      • 1970-01-01
      • 1970-01-01
      • 2013-07-22
      相关资源
      最近更新 更多