验证没有在asp.net中触发?

时间:2013-10-24 11:49:35

标签: asp.net

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

对于这个下拉列表,我把验证放在这个

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

但它没有开火。我怎么写这个?

3 个答案:

答案 0 :(得分: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警报中显示消息,请使用ValidationSummary ShowMessageBox="true"EnableClientScript="true"

答案 1 :(得分:1)

试试这个

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

答案 2 :(得分:-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
}