jQuery検証プラグインでデフォルトのエラー値を変更する簡単な方法はありますか?
エラーメッセージを書き直して、アプリにとってより個人的なものにしたいのですが、フィールドがたくさんあるので、フィールドxに個別にメッセージを設定したくありません...
jQuery検証プラグインでデフォルトのエラー値を変更する簡単な方法はありますか?
エラーメッセージを書き直して、アプリにとってより個人的なものにしたいのですが、フィールドがたくさんあるので、フィールドxに個別にメッセージを設定したくありません...
回答:
検証プラグインの後に含まれる別のファイル/スクリプトにこのコードを追加して、メッセージを上書きし、自由に編集します:)
jQuery.extend(jQuery.validator.messages, {
required: "This field is required.",
remote: "Please fix this field.",
email: "Please enter a valid email address.",
url: "Please enter a valid URL.",
date: "Please enter a valid date.",
dateISO: "Please enter a valid date (ISO).",
number: "Please enter a valid number.",
digits: "Please enter only digits.",
creditcard: "Please enter a valid credit card number.",
equalTo: "Please enter the same value again.",
accept: "Please enter a value with a valid extension.",
maxlength: jQuery.validator.format("Please enter no more than {0} characters."),
minlength: jQuery.validator.format("Please enter at least {0} characters."),
rangelength: jQuery.validator.format("Please enter a value between {0} and {1} characters long."),
range: jQuery.validator.format("Please enter a value between {0} and {1}."),
max: jQuery.validator.format("Please enter a value less than or equal to {0}."),
min: jQuery.validator.format("Please enter a value greater than or equal to {0}.")
});
検証呼び出しで独自のメッセージを指定できます。検証プラグインのドキュメント(http://jquery.bassistance.de/validate/demo/milk/)で使用されている「Remember the Milk」サインアップフォームからこのコードを持ち上げて短縮すると、独自のメッセージを簡単に指定できます。
var validator = $("#signupform").validate({
rules: {
firstname: "required",
lastname: "required",
username: {
required: true,
minlength: 2,
remote: "users.php"
}
},
messages: {
firstname: "Enter your firstname",
lastname: "Enter your lastname",
username: {
required: "Enter a username",
minlength: jQuery.format("Enter at least {0} characters"),
remote: jQuery.format("{0} is already in use")
}
}
});
validate(...)の完全なAPI:http : //jqueryvalidation.org/validate
jQuery.format("...
して修正しましたjQuery.validator.format("...
これは私のために働きました:
$.validator.messages.required = 'required';
$.validator.messages.maxlength = "Please enter no more than {0} characters.";
これは私のために働きました:
// Change default JQuery validation Messages.
$("#addnewcadidateform").validate({
rules: {
firstname: "required",
lastname: "required",
email: "required email",
},
messages: {
firstname: "Enter your First Name",
lastname: "Enter your Last Name",
email: {
required: "Enter your Email",
email: "Please enter a valid email address.",
}
}
})
messages
、$().fileupload
関数にはオプションがあることに注意してください。
すでにJQueryを使用しているので、ページ設計者にコードではなくカスタムメッセージをマークアップに追加させることができます。
<input ... data-msg-required="my message" ...
または、すべてのフィールドで単一の短いdata-msg属性を使用するより一般的なソリューション:
<form id="form1">
<input type="text" id="firstName" name="firstName"
data-msg="Please enter your first name" />
<br />
<input type="text" id="lastName" name="lastName"
data-msg="Please enter your last name" />
<br />
<input type="submit" />
</form>
そしてコードには次のようなものが含まれています:
function getMsg(selector) {
return $(selector).attr('data-msg');
}
$('#form1').validate({
// ...
messages: {
firstName: getMsg('#firstName'),
lastName: getMsg('#lastName')
}
// ...
});
別の可能な解決策は、フィールドをループして、各フィールドに同じエラーメッセージを追加することです。
$('.required').each(function(index) {
$(this).rules("add", {
messages: {
required: "Custom error message."
}
});
});
プラグインのソースコードを変更する代わりに、ダウンロードローカリゼーションフォルダーにあるような形式で追加のjsファイルを含め、validation.jsを読み込んだ後にそれを含めることができます。
jQuery.extend(jQuery.validator.messages, {
required: ...,
maxlength: jQuery.validator.format(...),
...
});
こんなに簡単だとは思っていませんでした。そのような検証を処理するプロジェクトに取り組んでいました。
以下の答えは、それほど努力せずに検証メッセージを変更したい人にとって大きな助けになります。
以下のアプローチでは、「このフィールド」の代わりに「プレースホルダー名」を使用しています。
簡単に変更できます
// Jquery Validation
$('.js-validation').each(function(){
//Validation Error Messages
var validationObjectArray = [];
var validationMessages = {};
$(this).find('input,select').each(function(){ // add more type hear
var singleElementMessages = {};
var fieldName = $(this).attr('name');
if(!fieldName){ //field Name is not defined continue ;
return true;
}
// If attr data-error-field-name is given give it a priority , and then to placeholder and lastly a simple text
var fieldPlaceholderName = $(this).data('error-field-name') || $(this).attr('placeholder') || "This Field";
if( $( this ).prop( 'required' )){
singleElementMessages['required'] = $(this).data('error-required-message') || $(this).data('error-message') || fieldPlaceholderName + " is required";
}
if( $( this ).attr( 'type' ) == 'email' ){
singleElementMessages['email'] = $(this).data('error-email-message') || $(this).data('error-message') || "Enter valid email in "+fieldPlaceholderName;
}
validationMessages[fieldName] = singleElementMessages;
});
$(this).validate({
errorClass : "error-message",
errorElement : "div",
messages : validationMessages
});
});
最新バージョンには、インラインで実行できる機能がいくつかあります。
単純な入力フィールドの場合は、次のdata-validation-error-msg
ように属性を追加できます-
data-validation-error-msg="Invalid Regex"
少し重いものが必要な場合は、validate関数に渡されるすべての値を持つ変数を使用して、完全にカスタマイズできます。詳細については、このリンクを参照してください-https://github.com/victorjonsson/jQuery-Form-Validator#fully-customizable
jQueryフォーム検証カスタムエラーメッセージ-tutsmake
$(document).ready(function(){
$("#registration").validate({
// Specify validation rules
rules: {
firstname: "required",
lastname: "required",
email: {
required: true,
email: true
},
phone: {
required: true,
digits: true,
minlength: 10,
maxlength: 10,
},
password: {
required: true,
minlength: 5,
}
},
messages: {
firstname: {
required: "Please enter first name",
},
lastname: {
required: "Please enter last name",
},
phone: {
required: "Please enter phone number",
digits: "Please enter valid phone number",
minlength: "Phone number field accept only 10 digits",
maxlength: "Phone number field accept only 10 digits",
},
email: {
required: "Please enter email address",
email: "Please enter a valid email address.",
},
},
});
});
<!DOCTYPE html>
<html>
<head>
<title>jQuery Form Validation Using validator()</title>
<script src="https://code.jquery.com/jquery-3.1.1.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-validate/1.19.0/jquery.validate.js"></script>
<style>
.error{
color: red;
}
label,
input,
button {
border: 0;
margin-bottom: 3px;
display: block;
width: 100%;
}
.common_box_body {
padding: 15px;
border: 12px solid #28BAA2;
border-color: #28BAA2;
border-radius: 15px;
margin-top: 10px;
background: #d4edda;
}
</style>
</head>
<body>
<div class="common_box_body test">
<h2>Registration</h2>
<form action="#" name="registration" id="registration">
<label for="firstname">First Name</label>
<input type="text" name="firstname" id="firstname" placeholder="John"><br>
<label for="lastname">Last Name</label>
<input type="text" name="lastname" id="lastname" placeholder="Doe"><br>
<label for="phone">Phone</label>
<input type="text" name="phone" id="phone" placeholder="8889988899"><br>
<label for="email">Email</label>
<input type="email" name="email" id="email" placeholder="john@doe.com"><br>
<label for="password">Password</label>
<input type="password" name="password" id="password" placeholder=""><br>
<input name="submit" type="submit" id="submit" class="submit" value="Submit">
</form>
</div>
</body>
</html>