Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/288.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
Php 如何防止用户使用jQuery在maxlength处输入值_Php_Jquery_Html_Maxlength_Disabled Input - Fatal编程技术网

Php 如何防止用户使用jQuery在maxlength处输入值

Php 如何防止用户使用jQuery在maxlength处输入值,php,jquery,html,maxlength,disabled-input,Php,Jquery,Html,Maxlength,Disabled Input,我希望用户不能输入文本,如果他在输入框中有超过5个逗号分隔的值 我已达到该值,但不确定。我认为maxlengthdynamic应该可以做到这一点 我试图应用下面的代码,但不工作- require(["jquery"],function($) { $("input.toEmail").keyup(function(e){ var inputEmail = $("input.toEmail").val(); var count = (inputEmail.ma

我希望用户不能输入文本,如果他在输入框中有超过5个逗号分隔的值

我已达到该值,但不确定。我认为
maxlength
dynamic应该可以做到这一点

我试图应用下面的代码,但不工作-

require(["jquery"],function($) {
    $("input.toEmail").keyup(function(e){
        var inputEmail = $("input.toEmail").val();
        var count = (inputEmail.match(/,/g) || []).length;  
        if(count >= 5){
            e.preventDefault();
            e.stopPropagation();
        }
    });
});

这不是经过测试的代码,但您可能会明白这一点。基本上,如果达到限制,您可以将输入内容设置回以前的状态

...
var inputEmail = $("input.toEmail").val();
var inputLength = inputEmail.length;

...

if (count >= 5) {
    $("input.toEmail").val(inputEmail.substring(0, inputLength - 1); // write back the previous content
}

您应该使用而不是keyup

$("input.toEmail").keypress(function(e) {
  var inputEmail = $("input.toEmail").val();
  var count = (inputEmail.match(/,/g) || []).length;
  if (count >= 5) {
    e.preventDefault();
    e.stopPropagation();
  }
});

你可以用这种简单的方法来实现它

注:

  • 用于
    “将字符串拆分为子字符串数组”
  • 用于
    “提取字符串的部分并以新字符串的形式返回提取的部分”
  • 用于
    “将数组作为字符串返回”
$(“input.toEmail”).keyup(函数(e){
var inputEmail=$(this.val();
var strArray=inputEmail.split(/,/g);
如果(strArray.length>=5){
this.value=strArray.slice(0,5).join(',');
}
});

据我所知,您希望限制为6个逗号限制值,因此它将包括5个逗号。我在这里做的是,你可以替换最后(第6)个逗号 因此,它将只允许6个值

$(函数(){
$(“input.toEmail”).keyup(函数(e){
var length_逗号=($(this.val().match(/,/g)| |[]).length)
如果(长度_逗号>=6){
this.value=this.value.replace(/,\s*$/,“”);
e、 预防默认值();
}
});
});


根据您的验证,此测试是否有效?这里只有5个逗号。你会允许空间吗?@MayankPatel不用担心,我会亲自检查空间的东西,以及这段代码是如何考虑OP想要的逗号的?@mitkosoft我认为OP已经解决了逗号的问题。这就是为什么我刚刚发布了最新的内容,并省略了他的工作代码。这就是
占位符的原因。此代码有效,但如果有人复制粘贴,则不起作用。请注意,当您按住逗号的键盘按钮时,代码不起作用。谢谢您的回复。同样,如果有人按ctrl+V组合键,如jhgsd、f、sdf、sdf、SDFSDFSFS,则此操作有效,但不起作用。您可以通过ctrl+V
jhgsd、f、sdf、sdf、SDFSDFSFS、
进行测试。结果将是
jhgsd,f,sdf,sdf,sdfsdfsds
。所以对我来说效果很好。好吧,这很奇怪。代码在这里运行良好。你是对的,但是当我把它粘贴到我的代码中时,当我粘贴新的字符串时,我得到了以下错误-ReferenceError:strArray不是definedIt,只是一个语法错误。您应该首先声明
strArray
变量。