2013-10-24 37 views
1
<td>Type: 

</td> 
    <td> 
    <asp:DropDownList ID="ddltype" runat="server"> 
    <asp:ListItem>---select---</asp:ListItem> 
     <asp:ListItem Text="Setter" Value="1"> 
     </asp:ListItem> 
     <asp:ListItem Text="Getter" Value="2"></asp:ListItem> 
      </asp:DropDownList> 
      </td> 

对于这个下拉列表,我把验证这样验证不在asp.net中触发?

var ddltype = document.getElementById('<%=ddltype.ClientID%>'); 
     var type = ddltype.options[ddltype.selectedValue].value; 
     if (type == 0) { 
      alert("Please Select setter/getter type."); 
      return false; 
     } 

但不点火。我怎么写这个?

+2

为什么不使用ASP.NET验证器? –

+0

什么是导致JavaScript的火灾?它是在一个onclick事件?为什么不使用ASP.NET验证中的构建?最少为0的'RangeValidator'应该这样做? – RemarkLima

+1

您选择的选择没有任何价值。做到这一点; 然后它会工作 –

回答

5

你真的应该熟悉ASP.NET验证器。 Javascript可以被禁用。

<asp:DropDownList ID="ddltype" runat="server" AutoPostBack="true"> 
    <asp:ListItem>---select---</asp:ListItem> 
    <asp:ListItem Text="Setter" Value="1"></asp:ListItem> 
    <asp:ListItem Text="Getter" Value="2"></asp:ListItem> 
</asp:DropDownList><br /> 
<asp:RequiredFieldValidator ID="reqType" runat="server" 
    InitialValue="---select---" 
    ControlToValidate="ddltype" 
    ErrorMessage="Required: Please select a Type" 
    Display="Dynamic" 
    CssClass="blah"> 
</asp:RequiredFieldValidator> 

InitialValue很重要。否则---select---将是一个有效的选择。

请注意,我还将AutoPostBack="true"添加到DropDownList,也许您希望在用户选择某个项目后立即回发。

侧面说明:如果你想显示在一个JavaScript警告消息使用ValidationSummaryShowMessageBox="true"EnableClientScript="true"

+0

OP询问javascript验证,但为什么你改变他的想法? –

+0

ASP。NET验证器也可以在客户端进行验证(如果需要),也可以在服务器端进行验证。它也更易于阅读和维护,然后摆弄(冗余)js-函数。 –

1

试试这个

var ddltype = document.getElementById('<%=ddltype.ClientID%>').text; 
if (type == "---select---") { 
     alert("Please Select setter/getter type."); 
     return false; 
    } 
+1

此外 - 更好的方式是使用RequiredFieldValidator,而不是编写自定义js验证。 RequiredFieldValidator也会在服务器端验证输入(例如,如果你的用户禁用了javascript)。 –

+0

是的,同意。但有些需求像这样的客户端验证。 – MusicLovingIndianGirl

+0

我认为这个OP代码是正确的!你会错的! –

-1

试试这个方法!但你可以使用asp.net验证控件。

任何方式,我的解决方案将验证两点式,在下拉菜单中选择淡水河谷或下拉列表中选择的项目

function Validate() 
    { 
    var e = document.getElementById('<%=ddltype.ClientID%>'); 
    //if you need value to be compared then use 
    var strUser = e.options[e.selectedIndex].value; 
    //if you need text to be compared then use 
    var strUser1 = e.options[e.selectedIndex].text; 
    if(strUser==0) **//for text use if(strUser1=="---Select---")** 
    { 
    alert("Please Select setter/getter type."); 
     return false; 
    } 
    } 

下面的代码已经改变你的一些代码和工作对我好

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Home.aspx.cs" Inherits="Home" %> 

<!DOCTYPE html> 

<html xmlns="http://www.w3.org/1999/xhtml"> 
<head runat="server"> 
    <title></title> 
    <script type="text/javascript"> 
     function validation() { 
      debugger; 
      var e = document.getElementById('<%=ddltype.ClientID%>'); 
      var strUser1 = e.options[e.selectedIndex].value; 
      if (strUser1 == 0) { 
       alert("Please Select setter/getter type."); 
       return false; 
      } 
     } 
    </script> 
</head> 
<body> 
    <form id="form1" runat="server"> 
     <table> 
      <tr> 
       <td> 
        <asp:Button ID="btnSave" runat="server" Text="Save" OnClientClick="validation();" OnClick="btnSave_Click" /> 
        <asp:DropDownList ID="ddltype" runat="server"> 
         <asp:ListItem Text="--Select--" Value="0"></asp:ListItem> 
         <asp:ListItem Text="Setter" Value="1"> 
         </asp:ListItem> 
         <asp:ListItem Text="Getter" Value="2"></asp:ListItem> 
        </asp:DropDownList> 
       </td> 
      </tr> 
     </table> 
     <div> 
     </div> 
    </form> 
</body> 
</html> 

,看到这一行

<asp:ListItem Text="--Select--" Value="0"></asp:ListItem> 

但是你错过了该项目的设置值,所以它出现错误,现在在该行设置值0,现在您的代码工作(请参阅我的示例代码),或者您需要使用.text并检查条件

if(strUser1=="---Select---") 
{ 
//alert 
}