2012-02-23 137 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> 

這是怎麼回事?