jQuery.validate.jsおよびasp.netマスターページ
-
22-07-2019 - |
質問
さまざまなファイルにjQueryがあり、最近、マスターページの項目を変更する必要がありました。これにより、さまざまなjaavscriptインクルードが機能しなくなりました。 Stackoverflowは IDセレクターの取得に関する問題を解決するための優れたアイデアを提案しています。
$("#ctl00_ContentMainPane_eliteUser").html
ただし、jquery.validate.jsを使用してフォームコントロールを検証しているため、外部 JSファイル
にこのようなコードがあります$(document).ready(function(){
$("#aspnetForm").validate({
rules:
{
ctl00$ContentMainPane$txtFirstName:
{
required:true,
CheckAlfaNumeric:true
},
ctl00$ContentMainPane$ctl00$ucRFI$txtComments:
{
required:true
}
},
messages:
{
ctl00$ContentMainPane$txtFirstName:
{
required:" Please enter first name"
},
ctl00$ContentMainPane$ctl00$ucRFI$txtComments:
{
required:" Please enter comments."
}
}
});
$("#" + GetPlaceholder() + "txtFirstName").blur(function(){
$("#" + GetPlaceholder() + "txtFirstName").valid();
});
jQuery.validator.addMethod("CheckAlfaNumeric", function(value, element) {
return this.optional(element) || /^[A-Za-z\ ]+$/i.test(value);
}, " Please enter alphabet.");
});
マスターページが修正されたために名前が変更された場合に、属性の名前付けの問題を防ぐ方法はありますか?
解決
.NET 4.0の待機。これにより、IDの構築方法を正確に指定できます;)
真剣に:ルールを手動で作成して、次のようなことを行うことができます(JSオブジェクトは、プロパティの<!> quot; array <!> quot;にすぎません):
var myRules = new Object();
myRules[GetPlaceholder() + "txtFirstName"] = { required:true, CheckAlfaNumeric:true };
var myMessages = new Object();
myMessages[GetPlaceholder() + "txtFirstName"] = { required:"Please enter first name" };
$("#aspnetForm").validate({ rules: myRules, messages: myMessages });
他のヒント
見ましたか
http://weblogs.asp.net/psperanza/archive/2009/05/07/jquery-selectors-selecting-elements-by-a-partial-id.aspx でjQueryの部分一致を確認します。
私が見ることができる他の唯一のオプションは、jsファイルのコンテンツをページに追加し、何か<!> lt;%= txtFirstName.ClientID%<!> gt;を使用することです
私の答えは、vegerbyの修正です。私の反応ではなく、彼の反応を支持してください。彼はその日を救った。
ここで、ちょっとした警告を追加するために、私の回答を掲載します。 (Using 'attr(<!> quot; name <!> quot;))を実行しています。 そして、ドロップダウンリストでそれを行う方法を示します。
私のコンテンツページには、<!> quot; ddlState <!> quotというasp.netドロップダウンリストがありません。および<!> quot; ddlFavoriteColor <!> quot;。ダミーの<!> quot;-Select-<!> quot;ドロップダウンリスト項目の上部の値なので、selectedIndexがゼロより大きい値が必要です。
注、このプロジェクトは<!> quot; stuck <!> quot;です。 3.5で。 :<!> lt;私はむしろ4.0のクールな機能で何かをしたかったのです。
はい、私の<!> quot; check <!> quot;コードを小さくすることもできますが、Webサンプルの場合は、何が起こっているかを示すために、簡潔で少し冗長にしたいのです。
function GetStateDropDownName() {
var cntlName = $("[id$=_ddlState]").attr("name");
return cntlName;
}
function GetFavoriteColorDropDownName() {
var cntlName = $("[id$=_ddlFavoriteColor]").attr("name");
return cntlName;
}
$(document).ready(function () {
jQuery.validator.addMethod("dropdownBoxHasItemSelected", function (value, select, arg) {
var returnValue = false;
var selectedIndex = $(select).prop("selectedIndex");
if (selectedIndex != 0) {
returnValue = true;
}
return returnValue;
}, "Please select a item.");
var myRules = new Object();
myRules[GetStateDropDownName()] = { dropdownBoxHasItemSelected: true };
myRules[GetFavoriteColorDropDownName()] = { dropdownBoxHasItemSelected: true };
var myMessages = new Object();
myMessages[GetStateDropDownName()] = { dropdownBoxHasItemSelected: "Please select a State." };
myMessages[GetFavoriteColorDropDownName()] = { dropdownBoxHasItemSelected: "Please select a Favorite Color." };
// Initialize validation on the entire ASP.NET form.
$("#aspnetForm").validate({
rules: myRules, messages: myMessages
});