【问题标题】:When checking if value is selected from dropdownlist it exits the page检查是否从下拉列表中选择了值时,它会退出页面
【发布时间】:2015-06-26 16:22:14
【问题描述】:

我有一个复选框和一个下拉列表,我正在尝试检查是否选中了复选框,是否已从下拉列表中选择了一个值。这很好,但是如果弹出警报消息并且我单击“确定”删除该消息,它会退出我所在的页面。我想说在页面上相同,我不知道为什么它会将我重定向到其他地方.此外,如果可能的话,我希望出现错误消息 ErrorMessage = "Please select" 而不是警告框,但这不是这里的主要问题。

    <tr>
                                                    <td class="Header">License Type</td>
                                                    <td></td>
                                                    <td>
                                                        <asp:DropDownList runat="server" ID="ddlHazLicenseType" CausesValidation="true" >
                                                        </asp:DropDownList>
                                                        <asp:CustomValidator id="CustomValidator2" runat="server" 
                                                              ControlToValidate = "ddlHazLicenseType"
                                                              ErrorMessage = "Please select"
                                                              ValidateEmptyText="True"
                                                              ClientValidationFunction="validateHazLicenceType" > 
                                                        </asp:CustomValidator>                                                    
                                                    </td>
                                                </tr> 

function validateHazLicenceType()
    {
        if (document.getElementById("<%=chkHazTrained.ClientID %>").checked) 
        {
            var ddl = document.getElementById("ddlHazLicenseType");
            var selectedValue = ddl.options[ddl.selectedIndex].value;
            if ($("#ddlHazLicenseType")[0].selectedIndex <= 0)
                {
                    alert("Please select a licence type");
                }
        }
    }

【问题讨论】:

  • 如果您可以发布更多页面标记,也许会有所帮助?很难判断您是回发还是提交,使用更新面板等。

标签: javascript jquery asp.net visual-studio


【解决方案1】:

试试类似的东西

function validateHazLicenceType(oSrc, args) {
        if (document.getElementById("<%=chkHazTrained.ClientID %>").checked) {
            var ddl = document.getElementById("<%=ddlHazLicenseType.ClientID %>");
            if (ddl.selectedIndex <= 0) {
                args.IsValid = false
            }
        }
    }

CausesValidation="true" 似乎只在所选索引更改时才引起验证 - 这意味着如果初始选择是索引 0,并且用户从不更改它,它将不会按预期进行验证。您可以尝试将 DDL 的选定索引设置为 -1(因此没有选择任何内容),但我认为这不能解决问题。您可能必须在其他地方验证 DDL 值 - 也许是在提交时?

【讨论】:

    【解决方案2】:

    自从我上次使用 asp 以来已经有一段时间了,很高兴看到实际的源 (html) 代码。无论如何,我想到了两件事:

    1) 让你的验证 js 函数在最后返回 false 发生的情况是您的验证功能假定验证通过,然后立即提交。返回 false 将防止这种情况发生(另外要知道的是:返回 false 意味着您停止默认操作并停止事件传播)

    2) 您对 DDL 的提交 onchange 可能以某种方式打开

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-03-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多