1

私の質問のタイトルが十分に意味があるかどうかわからないので、ここに私の問題があります:私は以下のようにサーバー側から動的に生成されたドロップダウンを持っています:

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」ブロックでこの初期値を使用できるようにするにはどうすればよいですか。

'OK'と'CANCEL'を処理する私の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...
    }
}
4

1 に答える 1

0

javascriptを使用すると、次のようなものを使用できます

var arr = document.getElementsById('select_id');
alert(arr[0].options[arr[0].selectedIndex].value);
于 2013-02-11T06:08:37.287 に答える