jquery - 如何使用 CSS(或 jQuery,如有必要)限制输入到 HTML Input 中的字符数?

标签 jquery html css dynamic restrict

我可以根据另一个控件的状态来操作一个控件,如 this jsfiddle 所示。 ,其中复选框的状态会改变文本框的宽度和背景颜色。

HTML 是:

<input type="checkbox" id="ckbxEmp" >czech Bachs
<input type="text" id="txtbxSSNOrITIN">

jQuery 是:

$(document).on("change", '[id$=ckbxEmp]', function () {
    if ($(this).is(":checked")) {
        $('[id$=txtbxSSNOrITIN]').css('background-color', '#ffff00');
        $('[id$=txtbxSSNOrITIN]').css('width', '24');
    } else {
        $('[id$=txtbxSSNOrITIN]').css('background-color', 'green');
        $('[id$=txtbxSSNOrITIN]').css('width', '144');
    }
}); 

但除此之外,我真正需要做的是根据复选框的状态来限制用户输入到文本框中的字符数。我该怎么做,最好使用 CSS,但如果需要,使用 jQuery?

最佳答案

jsFiddle

首先,设置maxlength喜欢:<input type="text" id="txtbxSSNOrITIN" maxlength="5">

$(document).on("change", '[id$=ckbxEmp]', function () {

    var ckd = this.checked;                        // ckd is now a boolean 
    $('[id$=txtbxSSNOrITIN]')
        .attr("maxlength", ckd? 2 : 5)             // 2 characters if checked, else 5
        .css({
            background: ckd? '#ffff00' : "green",  // yellow if checked, else green
            width: ckd? 24 : 144                   // 24px if checked, else 144
        });

}); 

上面还有一个较小的问题,那就是如果用户最初输入超过 5 个字符,如果您单击复选框,值长度仍然是 5!所以你需要一个额外的 strip ,以删除不需要的字符,如:

$(document).on("change", '[id$=ckbxEmp]', function () {

    var ckd = this.checked;
    $('[id$=txtbxSSNOrITIN]').attr("maxlength", ckd? 2 : 5).css({
       background: ckd? '#ffff00' : "green",
       width: ckd? 24 : 144
    }).val(function(i, v){
       // If checked, slice value to two characters:
       return ckd && v.length>2 ? v.slice(0,2) : v;
    });

}); 

如果你想go-pro你构建的代码,你可能还需要
防止用户感到愚蠢
通过存储最后一个(长的)键入的值。如果用户单击该复选框,然后意识到“好吧......那是愚蠢的”,通过再次勾选它关闭他应该取回旧值:

jsFiddle

$(document).on("change", '[id$=ckbxEmp]', function () {   

    var ckd = this.checked;
    var $input = $('[id$=txtbxSSNOrITIN]');
    if(ckd) $input.data("oldValue", $input.val() ); // Remember the current value

    $input.prop("maxlength", ckd? 2 : 5).css({
        background: ckd? '#ffff00' : "green",
        width: ckd? 24 : 144
    }).val(function(i, v){
        // If checked, slice value to two characters:
        return ckd && v.length>2 ? v.slice(0,2) : $input.data("oldValue");
    });

}); 

关于jquery - 如何使用 CSS(或 jQuery,如有必要)限制输入到 HTML Input 中的字符数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30607754/

相关文章:

javascript - 在表单字段模糊的 DIV 中显示文本

javascript - 使用 Firebase 数据创建 HTML 表

css - 如何在 HTML5 中使用 Email 标签

html - 如何在下面添加另外两个全宽部分

javascript - 如何在没有_空白页的情况下在新窗口中打开链接?

jquery - ToDo 应用程序无法正常工作

javascript - 通过 jquery 或 spath 选择器从 html 标签列表中选择特定的 html 标签

html - 如何在 Firefox 和 IE 中使用键盘导航跳过隐藏的单选选项?

javascript - SlideUp Jquery 不起作用

javascript - 在我的 Javascript 中未捕获的 TypeError - 从 JavaScript 调用 HTML