javascript – 选择列表元素(捕获向下/向上箭头)

前端之家收集整理的这篇文章主要介绍了javascript – 选择列表元素(捕获向下/向上箭头)前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有以下 HTML结构(‘ul li’呈现为下拉/选择)
  1. <input id="input_city" type="text" />
  2.  
  3. <div class="suggestions">
  4. <ul>
  5. <li value="0" name="New York">New York</li>
  6. <li value="1" name="London">London</li>
  7. <li value="2" name="Paris">Paris</li>
  8. <li value="3" name="Sydney">Sydney</li>
  9. </ul>
  10. </div>

需要JavaScript / jQuery代码来捕获向下箭头键按下事件(在输入上),它将选择第一个’li’元素

连续向下键选择下一个’li’元素;和向上键选择以前的’li’元素.

解决方法

既然你的问题有点过于模糊,那么你要完成的目标并不完全清楚.

如果您要突出显示li元素,请使用以下命令:

  1. var $listItems = $('li');
  2.  
  3. $('input').keydown(function(e)
  4. {
  5. var key = e.keyCode,$selected = $listItems.filter('.selected'),$current;
  6.  
  7. if ( key != 40 && key != 38 ) return;
  8.  
  9. $listItems.removeClass('selected');
  10.  
  11. if ( key == 40 ) // Down key
  12. {
  13. if ( ! $selected.length || $selected.is(':last-child') ) {
  14. $current = $listItems.eq(0);
  15. }
  16. else {
  17. $current = $selected.next();
  18. }
  19. }
  20. else if ( key == 38 ) // Up key
  21. {
  22. if ( ! $selected.length || $selected.is(':first-child') ) {
  23. $current = $listItems.last();
  24. }
  25. else {
  26. $current = $selected.prev();
  27. }
  28. }
  29.  
  30. $current.addClass('selected');
  31. });​

这是小提琴:http://jsfiddle.net/GSKpT/

如果您只是尝试设置输入字段的值,请将最后一行更改为:

  1. $(this).val ( $current.addClass('selected').text() );

这是小提琴:http://jsfiddle.net/GSKpT/1/

猜你在找的JavaScript相关文章