下拉菜单项反转

时间:2013-08-10 07:04:21

标签: javascript

我是javascript的新手,我的代码如下所示

在HTML中:

<select name="dropdown" onChange="javascript: alertUser()" >
<option value="0" selected>Eat</option>
<option value="1">Work</option>
<option value="2">Sleep</option>
<option value="3" >Enjoy</option>

在javascript中:

function alertUser()
{
    confirm("Are you sure?");
}

现在,这是我的问题。

当我从下拉列表中选择一个元素时,它会弹出确认对话框“你确定吗?”。如果单击“确定”,则选择应更改为选定值。如果取消,则所选值应重置为下拉列表中先前选择的值。

有人可以帮我解决问题。

谢谢

2 个答案:

答案 0 :(得分:1)

您可以使用:

window.onload = function () {
    var select = document.getElementsByName('dropdown')[0];
    var lastselected = select.value;
    select.onchange = function () {
        var newselected = select.value;
        if (confirm("Are you sure?")) {
            lastselected = newselected
            return true;
        }
        select.value = lastselected;
    }
};

我添加了onload,因此它会在页面加载时运行。我删除了你的内联js,更干净。所以你的HTML将是:

<select name="dropdown">
    <option value="0" selected>Eat</option>
    <option value="1">Work</option>
    <option value="2">Sleep</option>
    <option value="3">Enjoy</option>
</select>

DEMO HERE

答案 1 :(得分:0)

这是使用'selectedIndex'方法的替代方法。

http://jsfiddle.net/thetenfold/UjYg2/


HTML

<select name="dropdown">
    <option value="0" selected>Eat</option>
    <option value="1">Work</option>
    <option value="2">Sleep</option>
    <option value="3">Enjoy</option>
</select>

的JavaScript

function addEvent(elem, type, func) {
    if (elem.addEventListener) {
        elem.addEventListener(type, func, false);
    } else if (elem.attachEvent) {
        elem.attachEvent('on' + type, func);
    }
}

addEvent(window, 'load', function () {

    var select = document.getElementsByName('dropdown')[0],
        last = select.selectedIndex;
    addEvent(select, 'change', function () {
        if( confirm('Are you sure?') ) {
            last = select.selectedIndex;
        } else {
            select.selectedIndex = last;
        }
    });

});