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>

对于这个下拉列表,我像这样进行验证

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

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

4

3 回答 3

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 警报中显示消息,请使用ValidationSummarywith ShowMessageBox="true"和。EnableClientScript="true"

于 2013-10-24T11:55:04.577 回答
1

尝试这个

var ddltype = document.getElementById('<%=ddltype.ClientID%>').text;
 if (type == "---select---") {
        alert("Please Select setter/getter type.");
        return false;
    }
于 2013-10-24T11:52:31.627 回答
-1

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

无论如何,我的解决方案将验证两种类型,用于下拉选择的 vale 或下拉选择的项目

 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
}
于 2013-10-24T12:05:34.237 回答