Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/479.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 从“选择”下拉列表中选择项目时自动重定向_Javascript_Jquery_Html - Fatal编程技术网

Javascript 从“选择”下拉列表中选择项目时自动重定向

Javascript 从“选择”下拉列表中选择项目时自动重定向,javascript,jquery,html,Javascript,Jquery,Html,此页面按照我希望的方式进行操作: 但是我想找到一种更好的使用jQuery的方法,有谁能告诉我一个使用jQuery来实现这一点的好脚本吗?我还没有测试过这个,但我认为它与您引用的页面上的示例相当 $(document).ready( function() { $('#select').change( function() { location.href = $(this).val(); }); }); <select id="select"> <

此页面按照我希望的方式进行操作:


但是我想找到一种更好的使用jQuery的方法,有谁能告诉我一个使用jQuery来实现这一点的好脚本吗?

我还没有测试过这个,但我认为它与您引用的页面上的示例相当

$(document).ready( function() {
   $('#select').change( function() {
      location.href = $(this).val();
   });
});

<select id="select">
    <option value="#">Select a location</option>
    <option value="location.htm">Location</option>
    <option value="other.htm">Other</option>
</select>

您不需要预先打包的脚本,只需要几行代码

// get your select element and listen for a change event on it
$('#selectEl').change(function() {
  // set the window's location property to the value of the option the user has selected
  window.location = $(this).val();
});

其他人对此给出了很好的答案,但是

只是一个警告,当有人通过键盘导航时,IE处理选择列表的方式与其他浏览器非常不同。它将每按一次向上键/向下键统计为一次更改事件,这意味着您无法通过键盘导航重定向选择列表,从而导致无法使用鼠标的用户无法访问。其他浏览器在触发onChange之前等待enter事件或选择列表中的选项卡。我花了很长很长时间试图找到一个解决方法,但从来没有完全解决这个问题

我不知道jQuery是否解释了这一点;希望是这样,为了您的站点的可访问性


也许值得让选择列表选择去哪里,然后在旁边有一个按钮来激活重定向。除非你不关心IE用户的可访问性。

正如丹尼尔所建议的,简单的答案是——你不应该这样做,这对可用性和可访问性都有害

选择列表行为取决于用户的操作系统、浏览器和用户设置的组合。此外,onchange事件并不是以标准方式跨浏览器实现的

无论用户是使用鼠标、键盘、鼠标滚轮还是语音、屏幕阅读器,都应该能够从选择列表中获得预期的行为。。。。如果您确实将事件绑定到onchange,那么它决不应该使用户的注意力从选择列表中移开,例如页面重定向

就我个人而言,我经常使用键盘浏览网站表单,如果出现这种情况,我会使用jQuery尖叫:

$('#selectEl').bind("change keyup",function()
{
  // set the window's location property to the 
  // value of the option the user has selected
  window.location = $(this).val();
});
用于通常更改选项和箭头键

您可能可以使用此扩展: 我还没试过

还有一些鼠标选项可以添加到绑定。 转到:api.jquery.com/category/events/mouse-events/ 任何在该页面上有名称的函数,您都可以 在上面的绑定中使用“name”。就像我对你做的一样 change=>'change'和mouseup=>'mouseup'-easy peasy:

和平
如果此问题对您特别重要,请查看:-它有一个跨浏览器实现,可用于IE。不幸的是,该代码无法处理可能同时使用键盘和鼠标的用户。例如,鼠标滚轮对整个问题造成了巨大的影响,因为每个滚轮上的项目都会触发另一个onChange.Ah。触摸。我对此很感兴趣,所以我会试着看看我是否能找到任何东西。+1,每个人都错了,当笔记本电脑键盘用户抱怨时,他们会表现得很惊讶。要在所有按键、更改和模糊事件中都做到“正确”,这是一件非常棘手的事情。在我看来,还是缺少了一个?无论如何它不是jQuery,但是对于一些特别的东西,使用内联代码更容易、更简单。我确实需要这样的东西,但是我没有添加内部值url,而是添加了我的值,并使用get:thanking中的值在jQuery中创建了url