выберите значение параметра окна при щелчке правой кнопкой мыши: без использования параметра: выбрано - PullRequest
1 голос
/ 23 февраля 2012

Мой вопрос отличается от простого "как мне выбрать выбранную опцию из поля выбора"

В поле выбора ни один из параметров не «выбран» до щелчка правой кнопкой мыши по нему.
При щелчке правой кнопкой мыши по опции я хочу получить значение этого элемента опции.

Следовательно, опция: выбранный не будет работать.

<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 ]

1 голос
/ 23 февраля 2012

Свойство target параметра события будет относиться к элементу, который вызвал событие, в вашем случае к элементу option, по которому щелкнули правой кнопкой мыши:

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

DEMO

Несколько замечаний о вашем коде:

  • не нужно return false и e.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 голосов
/ 15 марта 2012
<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>

Как насчет этого?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...