2016-04-05 6 views
-1

長さとメッセージの長さをチェックするkeyup関数を書きましたが、入力欄の終了時に5桁未満になるように5桁になるように編集しています。私はそれでonblurrを持っており、それが働いたが、私は、フィールドをクリックした場合(変更スペースか何かをしないと私はエラーフィールド0エラーが発生します終了しています。誰かがは、キーアップ機能の終了時に長さを確認する必要があります

   $.fn.moRate = function (myLength) { 
    fieldVal=$(this).val(); 

return this.each(function() { 

$(this).keyup(function() { 
    fieldValue=$(this).val(); 
if (!/^[0-9][.]+$/.test($(this).val()) ) { 
$(this).val($(this).val().replace(/[^0-9][.]/g, '')); 
} 
    if (fieldValue.length>myLength) 
{ 
this.value=fieldValue.substr(0,myLength); 
var myThis=$(this).attr('id'); 

moAlert('Number Only Field','You have reached the field length: '+myLength,$(this)) 
    } 
}); 
    $(this).blur(function(){ 

if ($(this).val()==='') 
{ $(this).val(fieldVal)} 

if (fieldValue.length!=5){alert('Rate must be 5 digits including decimal')} 


}); 
}); 

}; 


}; 
+0

入力は、すでにすべてのブラウザでcompatibilyに建てられている最小値、最大値、タイプ番号を持っている - http://www.w3schools.com/tags/tag_input.asp – Tasos

+0

ない結果が期待したもの、ありますか? '.'文字を含む5桁の入力が必要ですか? – guest271314

+0

はい、強制的に数字を入力してください。コードをもっと後で進める必要があることは分かっていますが、現時点ではフィールドをクリックして項目をクリックしてそのエラーが表示される理由を知りたいだけです。私が1つのスペースをスペースバーにしてバックアップして、フィールドがまだ空でも空白でもエラーが出ない – user3657756

答えて

0

あなたが使用することができ、より良い方法のよう助言することができますrequired属性、RegExp\d+\.\d+|\.\d+pattern属性、maxlength6に設定された属性、css:focus:invalid擬似セレクタとtitle属性入力が無効

input:focus:invalid + [for="input"]:after { 
 
    content: "Rate must be 5 digits including decimal"; 
 
    color: red; 
 
}
<form> 
 
    <input id="input" 
 
     type="text" 
 
     pattern="\d+\.\d+|\.\d+" 
 
     maxlength="6" 
 
     title="Required input: five digits including a decimal" 
 
     required /><label for="input"></label><br> 
 
    <input type="submit" /> 
 
</form>

0である場合、メッセージを表示します

関連する問題