无法使用javascript获取下拉选择的值

本文关键字:选择 获取 javascript | 更新日期: 2023-09-27 18:23:51

我的下拉列表(用objectDataSource填充):

<asp:DropDownList runat=server ID="ddlUserTypes" DataSourceID="odsUserTypes" AppendDataBoundItems=true DataTextField="UserType" DataValueField="Usertype">
<asp:ListItem Value="">-Please select one-</asp:ListItem>
</asp:DropDownList>

Javascript函数获取下拉列表的选定值:

<script type="text/javascript" language="javascript">
    var notRegistered = false;
    var email = '';
    var userType = document.getElementById("ddlUserTypes");
    var pow = userType.options[userType.selectedIndex].value;
    function PreRegister() {debugger;
        if (notRegistered) {
            location.href = '/Register.aspx?pageid=<%= ConfigHelper.RegistrationPageId %>&Email=' + encodeURIComponent(email)+'&asd='+encodeURIComponent(pow);
            return false;
        }
        return true;
    }
</script>

但这不起作用pow只是不断返回undefined?这可能是因为用户类型似乎没有得到任何分配,因为它保持为null?有人知道为什么这个代码不起作用吗?

无法使用javascript获取下拉选择的值

正如gdoron所提到的,ASP.Net将使下拉列表的HTML id与您设置为<asp:DropDownList>的id参数不同,这就是JS找不到它的原因。

最简单的方法可能是将一个类分配给下拉列表,然后在JS中,按类定位元素。

使用这个我希望它能起作用。

var e = document.getElementById("ddlUserTypes");
var strUser = e.options[e.selectedIndex].value;
var userType = documentgetElemebyById('<%= ddlUserTypes.ClientID %>');

您应该阅读此

<asp:DropDownList CssClass="ddlClass" ...>

它将像一样被改造

<select class="ddlClass" ...>
    <option value="value1">value1</option>
    <option selected="selected" value="value2">value2</option>
    ...
</select>
// use jQuery
var selected = $('.ddlClass').val();
// withour jQuery 
// method1
var selected1 = document.querySelector('.ddlClass option[selected="selected"]').value;
// method2
var selected2 = document.querySelector('.ddlClass option:checked').value;