http://kudakurage.hatenadiary.com/entry/20091211/1260521031
http://ajax.aspnetcdn.com/ajax/jquery.validate/1.13.1/jquery.validate.min.js
<form name="FM">
<input type="text" name="hoge">
<input type="text" name="fuga">
</form>
$("#FM").validate({
rules: {
hoge: {
required: true
} ,
'fuga': {
required: true
}
} ,
messages: {
hoge: {
required: '入力してください。'
} ,
'fuga': {
required: '入力必須項目です。'
}
}
});
required – Makes the element required.
remote – Requests a resource to check the element for validity.
minlength – Makes the element require a given minimum length.
maxlength – Makes the element require a given maxmimum length.
rangelength – Makes the element require a given value range.
min – Makes the element require a given minimum.
max – Makes the element require a given maximum.
range – Makes the element require a given value range.
email – Makes the element require a valid email
url – Makes the element require a valid url
date – Makes the element require a date.
dateISO – Makes the element require an ISO date.
number – Makes the element require a decimal number.
digits – Makes the element require digits only.
creditcard – Makes the element require a credit card number.
equalTo – Requires the element to be the same as another one
$.validator.addMethod("myregex", function(value, element, reg_str) {
var re = new RegExp(reg_str);
return re.test(value);
}, "入力値が正しくありません");
バリデーション定義に以下のように記述
rules: {
postal: {
myregex: '^[0-9\-]+$'
}
} ,
messages: {
postal: {
myregex: '郵便番号を正しく入力してください。'
}
}
jQuery.validator.addMethod('my_validation_func', function(value, element) {
if ( XXXXX ){ // XXXXX にエラー判別ロジックを記述
return true; // trueが返るとエラーとならない
}
else{
return false; // falseが返るとエラー
}
}, 'デフォルトのエラーメッセージ');
$("#FM").validate({
highlight: function(element, errorClass) {
$(element).fadeOut(function() {
$(element).fadeIn()
})
}
});
標準ではエラー時にフォーム要素に error というクラスが付加されますが、これがいらない場合は 空のfunction() を定義します。
$("#FM").validate({
highlight: function(element, errorClass) {
}
});
バリデーションの実行タイミングは ・フォーム Submit時 ・エラー後のフォーム内容変更時 ですが、任意のタイミングでバリデーションを実行するには valid()メソッドを実行すればOK。
<form id="FM">
$("#FM").valid();
$("#FM").validate().cancelSubmit = true;
下記のようにすると id="foo" のラジオボタンやチェックボックスがチェックされている時にだけバリデーションを行います
rules: {
my_name : { required: '#foo:checked' }
} ,
次のような指定方法があります
指定値 | 説明 |
---|---|
#foo:checked | id="foo" のラジオボタンやチェックボックスがチェックされている時 |
#foo:filled | id="foo" のフォーム要素に何か文字(空白以外)が入力されている時 |
#foo:visible | id="foo" のフォーム要素が表示されている時 |
rules: {
my_name : { required: function() { return ($('#my_flg').val() === '1' ); } }
} ,
messages: {
my_name: { required: 'my_flgが『1』の時はmy_nameは空欄にはできません' }
}
例 : #submit_button を非活性にします。
submitHandler: function(form) {
// ボタンを非活性
$('#submit_button').prop('disabled', true);
form.submit();
}
<input type="text" name="myform[]">
<input type="text" name="myform[]">
<input type="text" name="myform[]">
rules: {
'myform[]': {
required: true
}
} ,
messages: {
my_name: { required: '少なくともどれか1つに入力してください。' }
}
クラス .group_require_1 のうちどれか1つに入力があるとヴァリデーションOKとなります。
<input type="text" name="textA" class="group_require_1">
<input type="text" name="textB" class="group_require_1">
<input type="text" name="textC" class="group_require_1">
jQuery.validator.addMethod("group_require", function(value, element, selector_name) {
var v = '';
$(selector_name).each(function( index ) {
v += $( this ).val();
});
if ( v ){ return true; }
else { return false; }
}, "このフィールドは必須です。");
rules: {
'student_no[]': {
group_require : '.group_require_1'
} ,
messages: {
my_name: {
group_require: '少なくともどれか1つに入力してください。'
}
}
validate()メソッドで初期化を行った後でルールを追加するにはadd()を使用します。
$("input[name=other_name]").rules("add", { required: '#other_radio:checked' }); //other_radio にチェックが有る時は必須とする
ルールとバリデーションエラーメッセージを合わせて追加する
$( "#myinput" ).rules( "add", {
required: true,
minlength: 2,
messages: {
required: "Required input",
minlength: jQuery.validator.format("Please, at least {0} characters are necessary")
}
});