0

ここで、テキストエリアでのユーザーの入力の検証に問題があります。ユーザーは、フォームのテキストエリア フィールドの 1 つに説明を入力することになっています。しかし、一部の人は、「aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa」のようなランダムなテキストを入力するか、最小長の要件をバイパスします。

ページのUIが乱れるため、ユーザーがスペースなしでこのような長いテキストを入力できないようにしたいと考えています。また、スペースなしでユーザーが入力した長いテキストも有効な URL になる可能性があります。では、これを管理し、ユーザーにエラーをスローして、テキストが長すぎて有効な URL でない場合にのみテキストを修正するにはどうすればよいですか??

PS: 文字列を自分で分割したくありません..それを検出して、クライアント側の検証でユーザーにエラーをスローしたいだけです。いくつかの疑問に終止符を打つために、強制的にスペースを入力してDBに保存するサーバー側の検証を行います。しかし、私はクライアント側でこの問題を解決することを期待しています

4

7 に答える 7

2
var STRING_MAX_LENGTH = 10;

var description = 'aaa aaaaaaaaaa bbbbbbbbbb http://www.google.com/search?q=client-side-filtering';
var array = description.split( ' ' );

$.each( array, function() {
  if ( this.length >= STRING_MAX_LENGTH ) {
    if( /^([a-z]([a-z]|\d|\+|-|\.)*):(\/\/(((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:)*@)?((\[(|(v[\da-f]{1,}\.(([a-z]|\d|-|\.|_|~)|[!\$&'\(\)\*\+,;=]|:)+))\])|((\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5]))|(([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=])*)(:\d*)?)(\/(([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)*)*|(\/((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)+(\/(([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)*)*)?)|((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)+(\/(([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)*)*)|((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)){0})(\?((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|[\uE000-\uF8FF]|\/|\?)*)?(\#((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|\/|\?)*)?$/i . test( this ) ) {
      alert( this + ' is an URL' );
    } else {
      alert( this + ' is not an URL' );
    }
  }
});

http://jsfiddle.net/vVYAp/

于 2013-04-25T12:17:52.677 に答える
2
function validate()
{
  var expression = /[-a-zA-Z0-9@:%_\+.~#?&//=]{2,256}\.[a-z]{2,4}\b(\/[-a-zA-Z0-9@:%_\+.~#?&//=]*)?/gi;
  var wordLengthExpr = /\b[^\s]{50,}\b/;
  var regex = new RegExp(expression);
  var wordLengthRegex = new RegExp(wordLengthExpr);
  var t = $("#myTextarea").val();
  if (t.match(regex) ||  !t.match(wordLengthRegex))
  {
    //valid
  }
  else
  {
    //throw error
  }
}
于 2013-04-25T11:08:04.670 に答える
0

jQuery 検証プラグインを使用する場合は、それにメソッドを追加できます。

jQuery.validator.addMethod("samechars", function(value, element) { 
    return this.optional(element) ||  !/([a-z\d])\1\1/i.test(value); 
}, "Invalid input");
于 2013-04-25T11:12:25.890 に答える
0

これを試して

    var value = Your text;

    var result = value.replace(" ","");

if(value.length == result .length)
  //not valid
else
 //valid
于 2013-04-25T11:04:21.607 に答える
0

各単語の長さを取得し、ユーザーを許可するかどうかを決定できます-

var arr = text.split(' ');

$.each(arr,function(){
   console.log(this.length);
   // check valid word length
}); 

http://jsfiddle.net/mohammadAdil/cNZtn/

于 2013-04-25T11:06:30.807 に答える