2011-12-03 13 views
1
$('form').find('input[pattern],textarea[pattern]').each(function(){ 
    if(!$(this).val().match($(this).prop('pattern'))){ 
     $(this).addClass('error'); 
    } 
    }); 


<textarea name=... required pattern=^.{10,255}$></textarea> 

基本的に、値がパターンと一致しない場合、クラス(エラー)が追加されます。しかし、1〜9文字しか入力しなくても、クラスはテキストエリアに追加されません。なぜこのjQuery HTML5フォールバックが機能しないのですか?

+1

HTML5でそれが有効な属性ではありませんので、それは、 'データpattern'、ない' pattern'を使用することが適切です。 'data- *'はです。 –

+0

パターンはHTML5 http://dev.w3.org/html5/spec/common-input-element-attributes.html#the-pattern-attribute – numbers1311407

+0

あなたは 'pattern'属性値を引用符で囲むのを忘れています... –

答えて

1

HTML5では、パターンは正規表現として解釈される可能性がありますが、ここでは単なる文字列です。正規表現を作る必要があります。

new RegExp($(this).attr('pattern')) 

また、あなたは属性の周りにいくつかの引用符をスローする場合があります

pattern="^.{10,255}" 
関連する問題