如何在选择更改之前使用javascript查找下拉列表的所选选项的索引/值

时间:2013-02-11 06:03:44

标签: javascript jquery drop-down-menu

我不确定我的问题的标题是否足够有意义,所以这是我的问题: 我有一个从服务器端动态生成的下拉列表,如下所示:

sb.append("<SELECT NAME='selectedQAStatuses' id='selectedReleaseQAStatuses' onchange='javascript:changeReleaseQAStatus(\""+releaseId+"\",\""+depEventSeq+"\",this);' >");
    sb.append("<OPTION>Please select a QA status...</OPTION>");
    for (String status : statusArray) {
        if(status.equals(releaseStatus))
            sb.append("<OPTION VALUE='"+status+"' selected>"+status+"</OPTION>");
        else
            sb.append("<OPTION VALUE='"+status+"'>"+status+"</OPTION>");

    }

现在调用javascript:changeReleaseQAStatus()。在这个javascript方法中,我调用confirm()来查看用户是否确定。如果用户在确认弹出窗口中选择“OK”,则从“IF”块进行Ajax调用等,但如果用户在确认弹出窗口中选择“取消”,则从“ELSE”块返回JS方法。

然而,在“取消”场景中,我看到尽管用户似乎已经“取消”了他的选择,但仍然在浏览器屏幕上,下拉列表似乎将新选项显示为“已选中”。 因此我认为,在Javascript的“ELSE”块中,我应该写一些应该将选择恢复到原始选择的东西。当我在浏览器上呈现页面时,我应该如何“记住”下拉列表的原始值是什么,以便我可以在“ELSE”块中使用此初始值来恢复我的下拉列表。

我的Javascript处理'确定'和'取消':

function changeReleaseQAStatus(releaseSeq, depEventSeq, element1){
    var selectedIndex   = element1.selectedIndex;
    var selectedStatus  = element1.options[selectedIndex].value;

    if (confirm("Do you want to change Release QA status to \"" + selectedStatus + "\" ?")){
        url = contextPath + "/changeQAStatusOfRelease.action?selectedStatus="+selectedStatus+"&releaseSeq="+releaseSeq+"&depEventSeq="+depEventSeq;
        ajaxUpdate({url:url,
           elementId:'compReleasesDtlsDiv',
        });
    }else{
        /// No Code needed to execute here...
    }
}

1 个答案:

答案 0 :(得分:0)

使用javascript你可以使用这样的东西

var arr = document.getElementsById('select_id');
alert(arr[0].options[arr[0].selectedIndex].value);