2

我必须验证列表框以供用户选择最多三个项目...

我编写了可以正常工作的代码...

但是,如果我将在 asp.net 的客户验证器中使用相同的代码...弹出味精,请选择最多三个项目...但在此之后,页面会回发到服务器...这不应该发生...

请在客户验证器上给我解决方案....

我的代码在这里……用于自定义验证器……

这里 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

而不是 return 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 回答