右键单击选择框选项值:不使用选项:已选中

时间:2012-02-23 13:13:51

标签: javascript jquery html javascript-events

我的问题不仅仅是“我如何从选择框中获取所选选项”

在选择框中,在右键单击选项元素之前,没有选中任何选项元素 在右键单击选项时,我想获取该选项元素的值。

因此,选项:选中将不起作用。

<select name='mySel' id='mySel' multiple>
  <option value='val1'>myOption1</option>
  <option value='val2'>myOption2</option>
</select>

我已将右键单击事件绑定到上下文菜单

// bind right click event to context menu
(function( $ ) {
  $.fn.rightClick = function(method) {
  $(this).bind('contextmenu rightclick', function(e){
    e.preventDefault();
    method();
    return false;
    })

  };
    })( jQuery );

以下事件处理程序代码仅在右键单击 -

之前选择了一个选项时才有效
$('#mySel').rightClick(function(e){
  alert($('#mySel option:selected').text());
    });

不使用选项:已选中,如何获取右键单击选项的值?

提前感谢您的提示。

2 个答案:

答案 0 :(得分:1)

event参数的target属性将引用触发事件的元素,在您的情况下是右键单击的选项元素:

$('#txBase').rightClick(function(e){
  alert(e.target.value); // val1 or val2
});

<强> DEMO

关于您的代码的一些注意事项:

  • 无需return falsee.preventDefault,两种陈述都有相同的结果,所以只需使用其中一种

  • 您可能想检查method是否未定义且在调用之前是一个函数,否则它将会中断

  • 当您致电method时,请将参数e传递给它,否则您将无法在回调中使用

以下是修改后的代码:

$(this).bind('contextmenu rightclick', function(e) {
    e.preventDefault();

    if (method && $.isFunction(method)) {
        method(e); // pass the event parameter to your callback
    }

})

答案 1 :(得分:0)

<select name='mySel' id='mySel' multiple>
<option value='val1' oncontextmenu="getValue(this);return false">myOption1</option>
<option value='val2' oncontextmenu="getValue(this);return false">myOption2</option>
</select>
<div id="status"></div>
<script>
function getValue(t){
document.getElementById('status').innerHTML=t.value;    
}  
</script>

这个怎么样?