2

ユーザーが選択する最大3つの項目についてリストボックスを検証する必要があります...

正常に動作するコードを記述しています...

しかし、asp.netのカスタマーバリデーターで同じコードを使用する場合は、最大3つのアイテムを選択してくださいというメッセージがポップアップ表示されます。しかし、その後、ページはサーバーにポストバックされます...それはすべきではありません起こる...

カスタマーバリデーターで解決策を教えてください...

私のコードはここにあります...カスタムバリデーター用です...

ここでlbohobbyは趣味のリストボックスです...

検証機能は次のとおりです。

function Validate() 
 { 
     var lblCount=0; 
     var lbGenre = document.getElementById("<%=lbohobby.ClientID %>");
     for(var x = 0; x < lbGenre.options.length; x++) 
     { 
          if(lbGenre.options[x].selected) 
          { 
               lblCount+=1; 
               alert(lblCount);
          } 
     } 
     if(lblCount > 3) 
     {               
          alert("maximum Three!");   
          return false; 
     } 
} 

返事してください...

4

2 に答える 2

1

falseを返す代わりに、を使用する必要がありますargs.IsValid = false。関数入力パラメーター(senderとargs)も追加する必要があります。

function Validate(sender, args)  
{
    args.IsValid = true
    var lblCount=0;      
    var lbGenre = document.getElementById("<%=lbohobby.ClientID %>");     
    for(var x = 0; x < lbGenre.options.length; x++)      
    {           
        if(lbGenre.options[x].selected)           
        {                
            lblCount+=1;                
            alert(lblCount);  
        }      
    }      
    if(lblCount > 3)      
    {                         
        alert("maximum Three!");
        args.IsValid = false;    
    }
}
于 2009-11-17T19:35:36.133 に答える
1

次のように関数を変更します。

function Validate(sender, args) 
 { 
     args.IsValid = true;
     var lblCount=0; 
     var lbGenre = document.getElementById("<%=lbohobby.ClientID %>");
     for(var x = 0; x < lbGenre.options.length; x++) 
     { 
          if(lbGenre.options[x].selected) 
          { 
               lblCount+=1; 
               alert(lblCount);
          } 
     } 
     if(lblCount > 3) 
     {               
          alert("maximum Three!");   
          args.IsValid = false;
     } 
}
于 2009-11-17T19:38:39.153 に答える