2009-08-05 12 views
1

私はさまざまなファイルでのjQueryを持っており、最近私は、マスターページのアイテムを変更する必要がありました。これにより、さまざまなjaavscriptインクルードが機能しなくなりました。 Get by IDセレクタに関する問題を解決するには、suggesting great ideasです。jQuery.validate.jsとasp.netのマスターページ

$("#ctl00_ContentMainPane_eliteUser").html 

外部 JSファイルに私たちはフォームコントロールを検証するためにjquery.validate.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."); 
}); 

防ぐために、どのように任意のアイデアマスターページが修正されたために名前が変更された場合、属性の名前付けの問題?あなたが構築されるべきかのIDの厳密に指定することができます.NET 4.0のための

+0

http://stackoverflow.com/questions/1232465/how-to-use-jquery-select-element-by-id-and-asp-net-without-putting([こちら]私の答えを参照してください。 -ctl00-everyw) – redsquare

答えて

5

待ち、;)マジ

:あなたは私の知る限り(JSオブジェクトは "以外の何ものでもないようなことをやって、手動でルールを作成することができますプロパティの配列」):

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 }); 
+0

それはちょうど私の中での.Net O phileかもしれないが、あなたはここで、「新しいオブジェクト()」強く型付けされたクラスを作ることができますか? – digiguru

+0

なし、クラスのそのような概念やJavaScriptでそのことについては強いタイプ... – veggerby

+0

デュードはありません。あなたの "myRules"と "myMessages"はその日を救った。 Upvote。 – granadaCoder

0

私の答えはveggerbyの私の変形例であるを使用することです。私のものではなく、彼の反応をアップしてください。彼はその日を救った。

私は若干の注意点を追加するためにここに私の応答を入れています。 (私はUsing 'attr( "name")をやっています)。 ドロップダウンリストでそれを行う方法を示します。見ていない

は私のコンテンツページは「ddlState」と「ddlFavoriteColor」と呼ばれるのasp.netドロップダウンリストを持っていることです。私はダミーの " - 選択 - "値をドロップダウンリスト項目の最上部に置くので、selectedIndexがゼロより大きいところが必要です。

注、このプロジェクトは3.5と "スタック" です。 :<私はむしろクールな4.0の機能で何かをしたでしょう。

はい、私の「チェック」コードは小さくてもかまいませんが、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 
    }); 
関連する問題