Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/87.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-HTML已选择选项的select元素onchange触发器_Javascript_Jquery_Html - Fatal编程技术网

JavaScript-HTML已选择选项的select元素onchange触发器

JavaScript-HTML已选择选项的select元素onchange触发器,javascript,jquery,html,Javascript,Jquery,Html,目标: 每当有人从下拉列表中选择选项时加载href值-即使已选择该选项 问题: 虽然下面的代码可以工作,但当某些选项已被选中或单击时,它不工作。例如,假设我按价格点击了选项。新页面将被很好地加载,默认情况下会选择OptionbyPrice,它现在位于列表顶部,位于ByName选项上方 现在我想再次选择价格选项,现在加载页面将无法工作 HTML: 在选择框中添加一个空选项。如果要选择已选择的内容,请先选择此空选项,然后选择所需的选项。那样就行了 <select name="" class="

目标: 每当有人从下拉列表中选择选项时加载href值-即使已选择该选项

问题: 虽然下面的代码可以工作,但当某些选项已被选中或单击时,它不工作。例如,假设我按价格点击了选项。新页面将被很好地加载,默认情况下会选择OptionbyPrice,它现在位于列表顶部,位于ByName选项上方

现在我想再次选择价格选项,现在加载页面将无法工作

HTML:


在选择框中添加一个空选项。如果要选择已选择的内容,请先选择此空选项,然后选择所需的选项。那样就行了

<select name="" class="inputbox" size="1" onchange="if(this.options[this.selectedIndex].value) window.top.location.href=this.options[this.selectedIndex].value">
    <option value="">---</option>
    <option value="/index.php/by,product_name">By name</option>
    <option value="/index.php/by,mf_name">By MF</option>
    <option value="/index.php/by,product_price">By price</option>
    <option value="/index.php/by,product_special">By type</option>
</select>
模糊将始终以您希望的方式捕捉


你不应该做这样的工作流程,不仅因为它很难为所有浏览器维护,而且键盘可访问性WCAG也很难,所以如果你将它绑定到onchange,你就不会担心键盘用户在有焦点时上下按下

如果在模糊上失去焦点时将其绑定会怎么样

将方法绑定到onfocus,在其中保存选择并删除选择 那么onchange将始终被触发。在那里,即使使用原始保存的选择,也可以执行任何操作
因为您正在加载一个新页面, 重置所选索引

onchange="var val=this.options[this.selectedIndex].value;
this.selectedIndex=0;
window.top.location.href=val">

您是更改事件的绑定,只有更改选择时才会触发该事件。尝试单击、键控、鼠标悬停或类似操作,甚至组合使用,以涵盖选择值的几种可能方法。只是尝试了一下。它工作,但只是部分,因为它甚至不允许我选择其他选项。它会在我点击下拉菜单时立即被触发,所以这对我的场景不好。这与用户熟悉的情况相反,因为一旦选择了一个选项,当你尝试点击同一个选项时,他们知道什么都不会发生。。。听起来像是UI设计问题。添加一个刷新按钮用可点击列表替换选择可能需要做一些不同的事情。。。无法在已选择的选项上激发事件。值得一试,好主意。。。但对用户来说仍然不是直观的…必须首先单击页面中的其他地方…我认为刷新按钮更有意义。我将此作为起点,并按照charlietfl的建议添加了类似刷新按钮的内容。看起来不错!
$('select').blur(function(){
    window.location = $('option:selected', this).val();
});
onchange="var val=this.options[this.selectedIndex].value;
this.selectedIndex=0;
window.top.location.href=val">