2011-05-02 64 views
1

的时候,当我选择任何价值,我必须做一个确认(确定/取消),如果用户选择取消,我需要保持以前的状态。发生什么事情是点击取消并执行return false;时,新值将被选中,并且不保留以前的值。我怎样才能确保选择了以前的值,当点击取消。我试着用下面的代码,但似乎并没有帮助:保留下拉值以下下拉列表返回false

var ele = document.getElementById('mySelect'); 
ele.selected = ele.defaultSelected;    
return false; 

<select id="mySelect" multiple="multiple"> 
    <option value="1">First</option> 
    <option value="2">Second</option> 
    <option value="3">Third</option> 
    <option value="4">Fourth</option> 
</select> 
+0

问题被标记为“jQuery的”,但你似乎并不使用它,是吗? – morgar 2011-05-02 01:51:16

+0

我也可以用jquery解决方案。 – user583126 2011-05-02 01:53:51

回答

1

在这里你去:)

<script type="text/javascript"> 
$(document).ready(function() { 
    $("#mySelect").mousedown(function() { 
     var old_value = $("#mySelect").val(); 
     var confirm_selection = confirm("Are you sure?"); 
     if (!confirm_selection) 
     { 
      $("#mySelect").val(old_value); 
      return false; 
     } 
    }); 

}); 

</script> 

只要改变任何你喜欢的文本确认。

不得不用鼠标按下(),而不是改变()使用改变功能后选择的新项目将被调用时的,因此没有办法知道选择什么样一个项目。

+0

如果用户使用键盘确认身份,可能会出现问题。这并不常见,但可能会发生。 – morgar 2011-05-02 02:14:58

+0

这段代码可以工作,但是我们正在设置值的时候触发onchange事件。有没有办法阻止它?我假设我的qn可能不合逻辑,因为事件是正确的解雇,但我只是想,如果有另一种方式去做! – user583126 2011-05-02 02:22:12

+0

我得到那个工作,thnx! – user583126 2011-05-02 02:38:20

0

我想 - 我认为 - ,唯一的解决办法是保持以前选择的值,并重新设置它取消。你可以很容易地得到你的选择的价值与val()

简述:

prev_val = $('#myselect').val(); 

if (cancel) { 
    $('#myselect').val(prev_val); 
} 
+0

您prev_val会给你当前选定的值(这不正是以前的状态) – user583126 2011-05-02 02:06:08

+0

我过分简化的答案代码,但我的意思是,你必须在用户操作之前存储'prev_val'。 – morgar 2011-05-02 02:08:07