Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/475.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,根据一个成员使用的解决方案,我们发现了一个bug。当点击输入框和/或文本区的提交按钮时,我试图检查是否存在非法字符 这就是解决办法 $('.someclass').blur(function () {if (/[%&<>\[\]{}]/.test(this.value) === true) { alert('These characters & < > [ ] { } % are not allowed. Please remove them a

根据一个成员使用的解决方案,我们发现了一个bug。当点击输入框和/或文本区的提交按钮时,我试图检查是否存在非法字符

这就是解决办法

$('.someclass').blur(function () {if (/[%&<>\[\]{}]/.test(this.value) === true) {
    alert('These characters & < > [ ] { } % are not allowed.  Please remove them and try again.');
}});

任何帮助都将不胜感激。谢谢

可能更聪明的解决方案是使用
键控
事件,以便您可以在用户键入字符时检查输入的字符。执行此检查时,如果遇到错误,还可以禁用表单提交:

$( "input" ).on( "keyup", function() {
  var value = $( this ).val();
  var invalidChars = [ '<', '>', '{', '}', '‰' ];
  if( $.inArray( value, invalidChars ) ) {
    $( "form" ).data( "invalid", true );
  }
  // message
});

$( "form" ).on( "submit", function( e ) {
  var $form = $( this);
  if( $form.data( "invalid" ) ) {
     e.preventDefault();
  }
});
$(“输入”)。在(“键控”,函数()上{
var值=$(this.val();
var invalidChars=['','{','}','‰'];
if($.inArray(值,无效字符)){
$(“表格”)。数据(“无效”,为真);
}
//信息
});
$(“表格”)。关于(“提交”,职能部门(e){
var$form=$(此);
如果($form.data(“无效”)){
e、 预防默认值();
}
});

只要同步这两个例程,就可以设置。

为什么要使用
blur
event?您的JSFIDLE行为正确(每次都检查值)!这就是给我的解决办法。在my fiddle中,如果只在第二个文本区域或输入框中输入&则无效。确定-您的fiddle不正确,因为您尚未定义spCheck函数-以下是固定的:。不过,原来的小提琴在铬合金上工作得很好。嗨!谢谢,但还是不行。在Chrome和Opera中都尝试过。我在第二个文本区的just中输入了just&现在回头看看代码,我知道它为什么对我有用了。这是更新后的版本:。现在已正确获取每个按钮的值。我仍然怀疑
模糊
是您原始查询中出现问题的原因,但是如果没有更多的代码,我将无法提供答案。嗨!Gabriele,谢谢,但我们需要确保它也适用于复制粘贴。然后使用
粘贴
事件。;-)
$( "input" ).on( "keyup", function() {
  var value = $( this ).val();
  var invalidChars = [ '<', '>', '{', '}', '‰' ];
  if( $.inArray( value, invalidChars ) ) {
    $( "form" ).data( "invalid", true );
  }
  // message
});

$( "form" ).on( "submit", function( e ) {
  var $form = $( this);
  if( $form.data( "invalid" ) ) {
     e.preventDefault();
  }
});