簡體   English   中英

在更改選擇之前,如何使用javascript查找下拉列表的所選選項的索引/值

[英]How to find dropdown's selected option's index/value using javascript, before the selection change

我不確定我的問題的標題是否足夠有意義,所以這是我的問題:我從服務器端動態生成了一個下拉列表,如下所示:

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()以查看用戶是否確定。 如果用戶在確認彈出窗口中選擇“確定”,則從“ 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...
    }
}

通過使用JavaScript,您可以使用類似這樣的東西

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM