Jquery検証プラグインを使用して登録フォームを検証しています。
各テキスト入力フィールドには、入力ボックスに値として事前に入力された指示があります
例:テキスト入力ボックスid = 'Name'の場合、デフォルト値は 'Enter YourName'に設定されます。以下のサンプルコードを貼り付けました。
<input type="text" id="Name" value="Enter Your Name" onfocus="if(this.value == 'Your Name'){this.value = '';}" type="text" class="required" onblur="if(this.value == ''){this.value='Your Name';}" size="25" />
私が知る必要があるのは、入力ボックスにデフォルトのメッセージまたは空の値が含まれている場合にプラグインが必須フィールドエラーをスローするように検証ルールで指定する方法です。
感謝します。
私はvalidator.addMethodを使用してカスタム検証を作成することで問題を回避する方法を考え出しました。これは本当に簡単です。
以下に検証ブロックのスニペットを貼り付けました。
//1. Define custom validation
$(document).ready(function()
{
jQuery.validator.addMethod("defaultInvalid", function(value, element)
{
switch (element.value)
{
case "Your Name": -- this will be the default value in the Name text box
if (element.name == "Your Name")
return false;
}
}
//2. Include custom validation in the rules for your element
$("#aspnetForm").validate(
{
rules:
{
Name: "required defaultInvalid"
},
messages:
{
Name: "Please input your name"
}
})
}
フォームにデフォルト値を持つすべての要素に同じものを使用しました。これはうまくいきます。
私はこれが良いと思います:
jQuery.validator.addMethod("defaultInvalid", function(value, element)
{
return !(element.value == element.defaultValue);
});
カスタムエラーメッセージを追加したい場合は、これを使用してください。
jQuery.validator.addMethod("defaultInvalid", function(value, element) {
return !(element.value == element.defaultValue);
}, 'Custom Error Message for this field');
私にとって、上記は次の変更でのみ機能しました。
jQuery.validator.addMethod("defaultInvalid", function(value, element)
{
switch (element.value)
{
case "Your Name":
if (element.name == "element_name") return false;
break;
default: return true;
break;
}
});
ルールセクションの後にこれを追加するだけです
onfocusout: function(element) { $(element).valid(); }
そしてそれは大丈夫でしょう。
$.validator.addMethod("defaultInvalid", function(value, element, param){
var r = $(element).rules();
var req=(this.objectLength(r))?r.required:false; // OR may be var req=r.required; // true, false or undefined.
return !req || (value!=param);
},$.validator.messages.required);
.。
,rules:{
message: {
defaultInvalid:$('#message').attr('placeholder')
}
}
このような機能は、「必須」および「オプション」フィールドの場合を考慮に入れています。
場合によっては「依存関係の不一致」というエラーメッセージが表示されるため、式「!req」は意図的に「this.optional(element)」を置き換えます。
複雑なフォームの入力フィールドを無視できるように、jquery.validationEngineにパッチを作成しました。次の変更を行いました。
あなたの場合、skipValidateクラスの変更を使用してこれを実行できます。パッチを当てたスクリプトは、英語のフィルターと一緒にここにあります(frのものも利用できます):
jquery.validationEngine.jsパッチ適用済み
jquery.validationEngine-en.jsパッチ適用済み
これらの変更をgitハブに送信する必要がありますが、現時点では送信する時間がありませんでした。
ジェロームゴッドバウト
パンテーラデンタル
これを正しく機能させるには、「デフォルト」のケースを追加する必要があると思います。
jQuery.validator.addMethod( "defaultInvalid"、function(value、element){ switch(element.value){ case "$ defaultText": if(element.name == "$ defaultText") return false; break; default: return true; break; } });