非法字符检查 - 功能只工作一次

时间:2013-11-21 17:59:41

标签: javascript jquery

在成员使用解决方案后,我们发现了一个错误。我在点击输入框和/或文本区域的提交按钮时尝试检查非法字符。

这是解决方案

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

这有效,但在第二次点击时它没有检查。第一次提交 - 提醒消息,第二次提交 - 没有提醒并保存。

任何人都可以改进吗?

此外,我使用onclick以不同的方式尝试了它,但它仅适用于第一个文本区域,但不适用于后续文本区域或输入框。请看一下fiddle

另一个功能与上面的问题相同。

function spCheck () {
var str = $("textarea, input[type='text']").val();
if(/^[a-zA-Z0-9- ]*$/.test(str) == false) {
alert('You have entered illegal characterss. Please remove them and try again.');
}}

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

1 个答案:

答案 0 :(得分:0)

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

$( "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();
  }
});

只需同步两个例程就可以了。