2012-02-23 136 views
1

我的问题不仅仅是“我如何才能从一个选择框所选择的选项”选择框选项的值:不使用选项:选择

在选择框,是“没有选择的选项元素不同'之前右键单击它。
右键单击一个选项,我想获得该选项元素的值。

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

<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); 

如果某一选项前右clicking--

$('#mySel').rightClick(function(e){ 
    alert($('#mySel option:selected').text()); 
    }); 

没有选择下面的事件处理程序代码只会工作使用选项:选中,我如何获得右键单击选项的值?

在此先感谢您的提示。

+2

想到第一个问题:为什么? – mplungjan 2012-02-23 13:20:01

+0

1)为了从列表中删除该选项,并且2)获得该选项的val并发送到服务器以进行删除(在提交之后) – Vineet 2012-02-23 13:23:27

+1

也检查'Right-Click'插件的来源:http:// www.abeautifulsite.net/blog/2008/05/jquery-right-click-plugin/,它做类似的东西... – robasta 2012-02-23 13:26:43

回答

1

事件参数将指触发事件的元素,你的情况,这是右键单击该选项元素的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 
    } 

}) 
+0

@Didler Ghys,非常感谢。你的代码工作。我已经接受你的回答:) – Vineet 2012-02-23 13:46:47

+0

很高兴帮助! – 2012-02-23 13:48:07

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> 

这是怎么回事?