javascript - 如何将代码放入函数中

标签 javascript

我有一个 textarea 字段的代码:

$('#m1').keyup(function () {
    var max = 300;
    var len = $(this).val().length;
    var $textarea = $(this);

    if (len >= max) {
        $('#charNum1').text('...you have reached the limit of 300')
    .css ({
      "color":"#ff3b3b",
      "background-color":"#ffffb1",
      "width":"190px"
    });

    //alert($this.text());
    $textarea.val($textarea.val().slice(0, max));
    } else {
        var char = max - len;
        $('#charNum1').text(char + ' characters left')
          .css({
      "color":"green",
      "background-color":"white"
    });

    }
});

问题是我有 5 个这样的区域:

#m1 #m2 #m3 #m4 #m5
#charNum1 #charNum2 #charNum3 #charNum4 #charNum5

当然,我想避免将代码复制 5 次(实际上是 4 次...)。

当加载页面时,它会从表中检索值并填充 #m1...#m5 并且它已经对字符进行了计数。

最佳答案

要使该功能适用​​于您的 #m* 元素,只需选择多个元素:

$('#m1, #m2, #m3').keyup(...

对于其余的代码,我会在 #m* 元素上放置 data 属性,说明它应该放在哪个 #charNum* 元素上地址。您可以使用更多参数 或使用子字符串 等,但我相信这种方式更通用

例如:

<textarea id="m1" data-counter="#charNum1"></textarea>

在 keyup 处理程序中,不使用 $('#charNum1'),而是使用:

// $('#charNum1')
$($textarea.data("counter"))

关于javascript - 如何将代码放入函数中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18519915/

相关文章:

javascript - 在 ASP.NET 页面中调用多个 jQuery 函数

javascript - 使用相同 CSS 的 div 更改布局序列

javascript - 如何在 JavaScript 中使用 for 循环加载 Accordion ?

javascript - For循环javascript没有分配正确的值

javascript - XML 的 UI5 屏幕尺寸相关属性

javascript - 使用 jquery 隐藏和显示具有相同按钮的菜单

尝试隐藏表格行时出现 JavaScript 错误

javascript - 每个团队的缺陷和严重程度,缺陷计数不正确

javascript - 在使用 Javascript 上传之前删除选定的文件

javascript - 将此 ES6 转换为 ES5 时遇到问题,包括扩展语法