Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/363.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何计算和限制表单中两个文本字段中的文本?_Javascript_Jquery - Fatal编程技术网

Javascript 如何计算和限制表单中两个文本字段中的文本?

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

我试图从两个文本字段中计算并限制用户输入。这意味着最大字符数是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));
        }
    });

});

});
但它只适用于单个文本框,不接受来自两个字段的值。请提供任何帮助。

演示:

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,它将禁用这些字段,但我需要再次编辑这些字段..是的变假。。