我可以根据另一个控件的状态来操作一个控件,如 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?
最佳答案
首先,设置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你构建的代码,你可能还需要
防止用户感到愚蠢
通过存储最后一个(长的)键入的值。如果用户单击该复选框,然后意识到“好吧......那是愚蠢的”,通过再次勾选它关闭他应该取回旧值:
$(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/