【问题标题】:How do I integrate keyup() to make a character counter via CodeIgniter?如何通过 CodeIgniter 集成 keyup() 来制作字符计数器?
【发布时间】:2013-01-05 03:30:27
【问题描述】:

我目前正在构建我的网站部分,用户可以在其中编辑他们的个人资料。在他们填写信息的每个类别中,都有一个文本区域,其中包含允许他们输入的字符数。我试图让数字在他们输入时倒计时。基本键。如何以及如何将此功能集成到代码点火器中?代码点火器是否为此提供了帮助程序?我对这一切都很陌生。

这是我尝试应用的代码:

<div class="edit_section_title">

            My Life <br /><span class="edit_section_sub">Tell us a about yourself <span class="edit_sub_text">(1350 character limit)</span>
        </div>
        <div class="edit_text_area">

        <?php
        if(empty($user['mylife']))
        {
            echo form_textarea('mylife');
        }
        else
        {
            echo form_textarea('mylife', $user['mylife']);
        }


        ?>  

        </div>
        <div class="edit_section_title">
            Occupation <br /><span class="edit_sub_text">(200 character limit) 
        </div>
        <div class="edit_input_area">
            <?php 

            if(empty($user['occupation']))
            {
                echo form_textarea('occupation');
            }
            else
            {
                echo form_textarea('occupation', $user['occupation']);
            }

            ?>
        </div>

thanks in advance

【问题讨论】:

  • 用于限制它。添加 maxlength="10" 即,但是我试图让我的字符限制“1350”在用户在文本区域中键入时倒数。谢谢。
  • 更新了小提琴看看答案。

标签: jquery codeigniter keyup


【解决方案1】:

我会使用 keydown 事件,它会产生一个响应更快的 gui。

http://jsfiddle.net/9BfR2/4/

html:

<textarea data-max-length="1350" data-target="#theinput"></textarea>
<input size="4" id="theinput">​

javascript:

var timer;
$("textarea[data-max-length]").on("keydown cut paste input",function(){
    var self = $(this), 
        maxlength = $(this).data("maxLength"), 
        target = $( $(this).data("target") )[0];
    clearTimeout(timer);
    timer = setTimeout(function(){
        if (self.val().length > maxlength) {
            self.val(self.val().substr(0, maxlength));
        }
        target.value = maxlength - self.val().length;
    },0);
}).triggerHandler("keydown");​

【讨论】:

  • 我喜欢这个逻辑。我应该将输入部分放在我的代码中的什么位置?
  • 它可以去任何你想去的地方,虽然我建议在 textarea 之后。
  • 我想我正在尝试使用我已经拥有的所有元素来执行此操作,并且不再添加。没有输入可以做到吗?
  • 是的,只需将输入替换为跨度(或其他),只要它与您传递给data-target的选择器匹配
【解决方案2】:

如果您正在寻找 jQuery 解决方案,您可以使用这些方法。例如,对于textareaname 属性设置为myLife,如您的问题所示。

<textarea name="myLife"></textarea​​​​​​​​​​​>
  1. maxlength 属性添加到您的textarea。这将指示浏览器将最大字符数限制为给定大小。

    <textarea name="myLife" maxlength="1350"></textarea​​​​​​​​​​​>
    
  2. 添加一个带有data-limit-for 属性的元素来保存剩余的字符数。 data-limit-for 的值是您要将其链接到的textarea 元素的name 属性的值。在我们的例子中,它是myLife

    <span data-limit-for="myLife">200</span> characters left
    
  3. 使用以下脚本在每次笔划时更新span 元素。该脚本将应用于任何具有maxlength 属性的textarea 以及具有链接到它的data-limit-for 属性的span 元素。

    $(function() {
        $("textarea[maxlength]").each(function() {
            var $this = $(this);
            var maxlength = $this.attr("maxlength");
            var $span = $("[data-limit-for=" + $this.attr("name") + "]");
            $this.on("keyup blur", function() {
                $span.text(maxlength - $this.val().length);
            });
        });
    });​
    

您可以对其他 textareainput 元素重复步骤 #1 和 #2。

See it here.

【讨论】:

  • 这是首选方法,但它没有做任何事情。这是我在标题中的内容: 跨度>
  • 这是我在 html 中的内容,我没有将它与我的具体情况联系起来,只是想让你写的东西起作用:
    200 个字符)
  • @LightningWrist,您没有将脚本放在$.ready 之间。我以为很清楚。无论如何,我用现成的包装器更新了我的答案
  • 恐怕有一个隐藏的问题,因为这也不起作用。知道我应该注意什么吗?
  • @LightningWrist,不知道。也许不包括 jQuery?
【解决方案3】:

这应该适用于基本思想:

<script>
  $(function(){
    $(".edit_text_area textarea").keyup(function(){
     if($(this).val().length > 1350){
        $(this).val($(this).val().substr(0, 1350));
    }
  });
</script>

或者使用那个:

$(function(){
        $(".edit_text_area textarea").prop('maxlength',1350);
      });

【讨论】:

  • #mylife 来自哪里?
  • #mylife 指的是由 >> echo form_textarea('mylife'); 生成的文本区域;
【解决方案4】:

试试这个:

$('#a').keypress(function(e) { // you can give your textarea id here #yourid
    var count = 1350; // <----------max character limit
    var a = parseInt(count - $(this).val().split('').length);//<-- counting the characters
    if (a == 0) { // <----- if limit exceeds stop the keypress event.
      e.preventDefault();
      alert('character limit exceeded.'); // <---and alert the msg.
    }
    $('span').html(a);// <--- shows the characters left
});

在小提琴中找到这个:http://jsfiddle.net/f2hqt/1/

这只是一个基本的想法。

试试看这对你有没有帮助。

【讨论】:

  • 输入 XXXXXXXXXXXX 并复制粘贴到你的 jsfiddle 中。
  • @siamak.A.M OP 想要计算按键上的字符。
  • Backspace 也失败了,也可能是上下文菜单(虽然我怀疑我的在这方面也会失败)。
猜你喜欢
  • 2019-05-25
  • 2014-05-12
  • 2022-06-15
  • 2014-07-11
  • 1970-01-01
  • 2016-10-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多