代码之家  ›  专栏  ›  技术社区  ›  Paddy Hallihan

基于值重定向页面

  •  1
  • Paddy Hallihan  · 技术社区  · 6 年前

    我有一个 <select> 在我的网站上标记,当我更改时,它会提交表单并转到有问题的页面,在那里我可以使用 $_POST 变量。

    <form method='POST' action='myURL'>
    <select onchange='this.form.submit();'>
    <option value='1'>1</option>
    <option value='2'>2</option>
    <option value='3'>3</option>
    </select>
    </form>

    这很好,可以按预期工作,但是如果有人在页面上并刷新页面,我不希望收到重新提交表单的警告。

    所以我想做的是移除表单元素,并有类似的东西,我可以使用 $_GET 而不是 $邮政 .

    <select onchange='window.location.href="myURL?var=this.value";'>
    <option value='1'>1</option>
    <option value='2'>2</option>
    <option value='3'>3</option>
    </select>

    但是,这会重定向到页面,但是 $GET 变量的字面意思是 this.value .

    有没有其他方法让它工作,或者我需要为此编写一个外部的JS?

    注释 JS 不是我的语言,上面的片段都是通过 PHP

    2 回复  |  直到 6 年前
        1
  •  6
  •   Robin Zigmond    6 年前

    您已经硬编码了字符串-只需执行以下操作:

    <select onchange='window.location.href=("myURL?var=" + this.value);'>
    
        2
  •  0
  •   Zakaria Acharki    6 年前

    我建议您避免使用内联事件作为 onchange 并使用 addEventListener() 方法来附加 change 事件。

    因此,首先给您选择标记一个标识符(id或class),然后使用如下标识符附加事件:

    <select id="my-select">
    

    然后,在JS部分中,它可以附加如下:

    document.querySelector('#my-select').addEventListener('change', function(){
        window.location.href = "myURL?var=" + this.value;
    })
    

    或者,如果您可以使用jquery,它将是:

    $('#my-select').change(function(){
        window.location.href = "myURL?var=" + $(this).val();
    })