Javascript 如何计算和限制表单中两个文本字段中的文本?
我试图从两个文本字段中计算并限制用户输入。这意味着最大字符数是20,然后用户只能在两个文本字段中输入20个字符Javascript 如何计算和限制表单中两个文本字段中的文本?,javascript,jquery,Javascript,Jquery,我试图从两个文本字段中计算并限制用户输入。这意味着最大字符数是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-c
$(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));
}
});
});
});
但它只适用于单个文本框,不接受来自两个字段的值。请提供任何帮助。演示:
JQuery
$('#左,#右').keyup(函数(e){
如果(maxLen()演示:
JQuery
$('#左,#右').keyup(函数(e){
如果(maxLen()您只需要这段代码,它会检测向左或向右的按键,如果两个按键的计数超过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并使用returnfalse来停止进一步的输入,但是这会导致禁用退格键和其他键
此解决方案在按键时执行,直到按下键后才计算字符数。如果数字超过20,则将删除最后键入的字符。这样,用户仍可以按backspace键并根据自己的意愿进行更改,但不能超过20个字符
我还进一步修改了脚本,它所做的是检测任何更改,例如长字符串的粘贴。它删除了20个字符以上的“差异”
这应该是问题的一个完整解决方案。您所需要的就是这段代码,它检测向左或向右的按键,如果两个按键的计数超过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并使用returnfalse来停止进一步的输入,但是这会导致禁用退格键和其他键
此解决方案在按键时执行,直到按下键后才计算字符数。如果数字超过20,则将删除最后键入的字符。这样,用户仍可以按backspace键并根据自己的意愿进行更改,但不能超过20个字符
我还进一步修改了脚本,它所做的是检测任何更改,例如长字符串的粘贴。它删除了20个字符以上的“差异”
这应该是问题的完整解决方案。嗯,这应该是一个简单的解决方案:
只需计算值的长度,如果要限制更多的元素,请使用jquery.each来迭代输入
只需计算值的长度,如果要限制更多的元素,请使用jquery.each来迭代输入我怀疑您是否可以执行$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;}
我怀疑您能否执行$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;}
你能创建一个演示pls吗?你能创建一个演示pls吗?好吧,这是所有的文本输入…很好的功能,但没有解释,也不是op要求的…很可能这太多了inputs@Vogel612更新并添加了一些解释。虽然代码(及其注释)很好地说明了问题,但我接受你的观点:)很好的解决方案,但是当粘贴超长文本时,它会忽略您的粘贴并恢复到以前的值。@StevePapa这是我的意图,但如果用户需要,我会这样做:-P这是怎么回事:?这是所有文本输入…很好的功能,但没有解释,也不是op要求的…很可能这会计算太多输入@Vogel612更新并添加了一些解释。虽然代码(及其注释)很容易解释,但我接受你的观点:)很好的解决方案,但是当粘贴超长文本时,它会忽略您的粘贴并恢复到以前的值。@StevePapa这是我的意图,但如果用户需要,那么我会这样做:-P这是怎么回事:?您是对的,已更新为使用键控,解释也已更新如果我粘贴字符串怎么办?您只删除了最后一个字符!一旦计数达到20,它将禁用这些字段,但我需要再次编辑这些字段..返回false..您是正确的,已更新以处理keyup,解释也已更新如果我粘贴一个字符串怎么办?您只删除了最后一个字符!一旦计数达到20,它将禁用这些字段,但我需要再次编辑这些字段..是的变假。。