Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/react-native/7.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
Html 在选择框中选择选项时重定向_Html_Action_Onchange - Fatal编程技术网

Html 在选择框中选择选项时重定向

Html 在选择框中选择选项时重定向,html,action,onchange,Html,Action,Onchange,目前我正在使用这个: <select ONCHANGE="location = this.options[this.selectedIndex].value;"> 它将我重定向到选项值内部的位置。但它并没有像预期的那样起作用。。这意味着,如果我单击select的第一个选项,那么onChange操作将不会运行。我在考虑javascript,但我想你们会有一些更好的建议。那么,如果我单击每个选项,它会将我重定向到它的值,我如何使它工作呢?因为第一个选项已经被选中,所以更改事件永远不会触

目前我正在使用这个:

<select ONCHANGE="location = this.options[this.selectedIndex].value;">

它将我重定向到选项值内部的位置。但它并没有像预期的那样起作用。。这意味着,如果我单击select的第一个选项,那么onChange操作将不会运行。我在考虑javascript,但我想你们会有一些更好的建议。那么,如果我单击每个选项,它会将我重定向到它的值,我如何使它工作呢?

因为第一个选项已经被选中,所以更改事件永远不会触发。添加一个空值作为第一个值,并在位置分配中检查是否为空

下面是一个例子:

选择 谷歌 雅虎
我强烈建议从内联JavaScript转向如下内容:

function redirect(goto){
    var conf = confirm("Are you sure you want to go elswhere?");
    if (conf && goto != '') {
        window.location = goto;
    }
}

var selectEl = document.getElementById('redirectSelect');

selectEl.onchange = function(){
    var goto = this.value;
    redirect(goto);

};
。 .

在JS Fiddle中的标记中,第一个选项没有指定值,因此单击它不应该触发函数执行任何操作,而且由于它是默认值,因此单击select然后选择第一个默认选项无论如何也不会触发更改事件

更新:
最新示例的2017-08-09重定向URL需要调出,因为JS Fiddle和这两个域之间存在混合内容的错误,以及这两个域对框架内容都要求“sameorigin”。-Albert使用jquery将其作为全局重用函数

$('.select_location').on('change', function(){
   window.location = $(this).val();
});
HTML


现在,您可以通过将.select_location类添加到任何select元素类中来重用此函数

,这可以通过在select控件的onchange事件中添加代码来存档

例如:

<select onchange="this.options[this.selectedIndex].value && (window.location = this.options[this.selectedIndex].value);">
    <option value=""></option>
    <option value="http://google.com">Google</option>
    <option value="http://gmail.com">Gmail</option>
    <option value="http://youtube.com">Youtube</option>
</select>

对于不想使用内联JS的人

<select data-select-name>
    <option value="">Select...</option>
    <option value="http://google.com">Google</option>
    <option value="http://yahoo.com">Yahoo</option>
</select>

这已经是JavaScript了。内联JavaScriptI执行了此操作,但如果用户按下浏览器上的“后退”按钮,则可以选择“空”值,脚本位置将被中断。@Lucas然后将禁用的属性添加到“选择”中。。。所以当你点击它时什么也不会发生:选择…@All-不需要。上面的脚本不会中断!!这对我有效,但我必须添加当前URL,这是因为我将所选值作为GET参数传递:onchange=This.options[This.selectedIndex].value&&window.location='{{URL::current}}?category_id='+This.options[This.selectedIndex].value;三年太晚了,但这是最好的答案。你的小提琴链接给出了一个404,否则答案很好;HTML缺失,但内联javascript和标准javascript在google爬行方面会有什么不同吗?
    {{-- dynamic select/dropdown --}}
    <select class="form-control m-bot15" name="district_id" 
        onchange ="location = this.options[this.selectedIndex].value;"
        >
          <option value="">--Select--</option>
          <option value="?">All</option>

            @foreach($location as $district)
                <option  value="?district_id={{ $district->district_id }}" >
                  {{ $district->district }}
                </option> 
            @endforeach   

    </select>
<select data-select-name>
    <option value="">Select...</option>
    <option value="http://google.com">Google</option>
    <option value="http://yahoo.com">Yahoo</option>
</select>
<script type="text/javascript">
    document.addEventListener('DOMContentLoaded',function() {
        document.querySelector('select[data-select-name]').onchange=changeEventHandler;
    },false);

    function changeEventHandler(event) {
        window.location.href = this.options[this.selectedIndex].value;
    }
</script>