我试图计算并限制来自两个文本字段的用户输入。这意味着max char是20,那么用户只能在两个文本字段中输入20个字符。我试过这个
$(document).ready( function() {
jQuery.fn.getLength = function(){
var count = 0;
var max=$("#max").val();
this.each(function(){
count += jQuery(this).val().length;
});
var rem=max-count;
return rem;
};
var $inputs= jQuery('#left,#right');
$inputs.bind('keyup',function(){
var remain=$inputs.getLength();
jQuery('#count').html($inputs.getLength());
$("#left").keyup(function(){
if($("#left").val().length > remain){
$("#left").val($("#left").val().substr(0, remain));
}
});
$("#right").keyup(function(){
if($("#right").val().length > remain){
$("#right").val($("#right").val().substr(0, remain));
}
});
});
});
但它仅适用于单个文本框,不会从2个字段中获取值。任何帮助请... ..
答案 0 :(得分:2)
DEMO: http://jsfiddle.net/EEbuJ/2/
$('#left, #right').keyup(function(e) {
if (maxLen() <= 20)
{
// Save the value in a custom data attribute
$(this).data('val', $(this).val());
} else {
// over-ride value with saved data
$(this).val($(this).data('val'));
}
});
function maxLen() {
var x = 0;
$('#left, #right').each(function() {
x += $(this).val().length;
});
return x;
};
如果指定输入中的字符总数不超过20,则会将输入的输入值保存为自定义数据属性。
当达到最大字符数时,我们停止保存输入的值并将值恢复为我们之前的保存(即小于最大值),有效地撤消该值。
答案 1 :(得分:2)
您需要的只是这段代码,它会检测#left或#right中的按键,如果两者的计数超过20,则删除最后输入的字符
$("#left,#right").keyup(function () {
var charCount = $('#left').val().length + $('#right').val().length;
if (charCount > 20) {
difference = -Math.abs(charCount - 20);
$(this).val($(this).val().slice(0, difference));
}
});
我的第一个解决方案是在keydown上工作,并使用return false来停止进一步的输入,但这会产生禁用退格键和其他键的效果。
此解决方案在keyup上执行等待,直到按下该键后才计算字符数。如果数字超过20,它将删除最后输入的字符。这样,用户仍然可以按退格键并根据需要进行更改,但不会超过20个字符。
我还进一步修改了脚本,它做的是检测任何更改,例如一根长串的粘贴。它消除了20个字符以上的“差异”。
这应该是问题的完整解决方案。
答案 2 :(得分:0)
它应该很容易:http://jsfiddle.net/4DETE/1/
var textLength =$inputs.eq(0).val().length+$inputs.eq(1).val().length;
if(textLength>=20)
return false
只计算值的长度,如果您要限制更多元素,请使用jquery.each迭代输入
答案 3 :(得分:0)
我怀疑你能做$inputs.getLength()
因为$ inputs是一个数组,因此会返回arraylength:2
您必须在两个输入中加上总符号长度:
$('#left,#right').keydown(function(){
var leftlength = $('#left').val().length;
var rightlength = $('#right').val().length;
if(leftlength + rightlength > 20)
{
return false;
}
});
或缩短
if($('#left').val().length+$('#right').val().length >20){return false;}