2016-09-23 2 views
0

У меня есть функция Javascript, которая захватывает onChange из раскрывающегося списка. Возможно ли запустить событие только в том случае, если пользователь выбирает элемент с помощью мыши в раскрывающемся списке, а не при прокрутке вверх или вниз с помощью клавиатуры?Javascript onChange только при использовании мыши

+2

Вы можете проверить наличие события click. Хотя я не уверен, почему вы захотите это сделать, некоторые отключенные пользователи должны использовать клавиатуру или другую форму ввода, кроме мыши, для этого. –

+0

не будет работать onclick? – bjanes

+0

Нравится это https://jsfiddle.net/ou8z1q47/? –

ответ

0
Have you tried this : 

<html lang="en"> 
<head> 
    <meta charset="utf-8"> 
    <title>change demo</title> 
    <style> 
    div { 
    color: red; 
    } 
    </style> 
    <script src="https://code.jquery.com/jquery-1.10.2.js"></script> 
</head> 
<body> 

<select name="sweets" multiple="multiple"> 
    <option>Chocolate</option> 
    <option selected="selected">Candy</option> 
    <option>Taffy</option> 
    <option selected="selected">Caramel</option> 
    <option>Fudge</option> 
    <option>Cookie</option> 
</select> 
<div></div> 

<script> 
$("select") 
    .change(function() { 
    var str = ""; 
    $("select option:selected").each(function() { 
     str += $(this).text() + " "; 
    }); 
    $("div").text(str); 
    }) 
    .change(); 
</script> 

</body> 
</html> 
    Trigger the handler 
</div> 
+0

Используйте javascript, а не jquery. Вопросительный тег о javascript и onchange. –

+0

попытайтесь использовать это: $ (document) .on ('change', '.entity', function() { var selectedCatId = $ (this) .val(); –

0

проверить это решение, он игнорирует выбор клавиатуры, единственный способ, чтобы выбрать его с помощью мыши

<script type="text/javascript"> 
function IgnoreAlpha(e) 
{ 
if (!e) 
{ 
    e = window.event ; 
} 
if (e.keyCode >= 65 && e.keyCode <= 90) // A to Z 
{ 
    e.returnValue=false; 
    e.cancel = true; 
} 
} 
</script> 

<body> 
<p> 
    <select id="MySelect" name="MySelect" onkeydown="IgnoreAlpha(event);""> 
     <option selected="selected" value="" /> 
     <option value="A">A</option> 
     <option value="B">B</option> 
     <option value="C">C</option> 
    </select> 
</p> 
</body> 

Это, безусловно, работать для вас

0

Попробуйте this.This работает отлично в IE но не в хроме. Не знаю, почему? Протестировано с помощью инструмента отладчика IE (отлично работает), а также с помощью VS2015 (IE, нажатие на точку останова onkeydown), но не ударяя точку останова при запуске в chrome.

<!DOCTYPE html> 
<html> 
<head> 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"> 
</script> 
<script type="text/javascript"> 
     function IgnoreArrow(e) 
     { 

     if (e.keyCode == 37 || e.keyCode == 38 || e.keyCode ==39 || e.keyCode ==40) 
     { 
      return false; 
     } 
     } 

     function myFun() { 
      var x = document.getElementById("mySelect").value; 
      document.getElementById("demo").innerHTML = "You selected: " + x; 

     } 
</script>  
</head> 
<body>  
     <p> 
    <select id="mySelect" name="mySelect" onkeydown="return IgnoreArrow(event);" onchange="myFun()"> 
     <option selected="selected" value="" /> 
     <option value="Dream Theater">Dream Theater</option> 
     <option value="Metallica">Metallica</option> 
     <option value="Iron Maiden">Iron Maiden</option> 
    </select> 
</p> 
<p id="demo"></p> 


</body> 
</html>