如何继续更改= "form.submit()"进入脚本标签?



我有以下html:

<form id="forum_jump" action="http://www.url.com/index.php?" method="get">
        <fieldset>
            <select name="showforum" id="showforumJump" class="input_select">
                <optgroup label="Redirect">
                    <option value="0">Frontpage</option>
                    <option value="1">Forum 1</option>
<option value="2" selected="selected">&nbsp;&nbsp;|-- Forum 2</option>
<option value="3">&nbsp;&nbsp;|-- Forum 3</option>
<option value="4">&nbsp;&nbsp;|-- ...</option>
                </optgroup>
            </select>
            <input type="submit" value="Ok" class="input_submit alt" id="forum_jump_submit">
        </fieldset>
    </form>

我知道我可以改变选择html,告诉它提交表单时,选择改变:

<select name="showforum" id="showforumJump" class="input_select" onchange="forum_jump.submit()">

但是我如何将其转换为脚本块?我试过在Chrome开发控制台手动运行下面的东西:

document.getElementById('showforumJump').addEventListener("change", forum_jump.submit(), false );

我也尝试了attachEvent,在我读到这显然只是为IE(?)。

addEventListener以"undefined"被写入控制台结束,然后立即重新提交表单并重新加载页面。我希望控制台在重新提交之前等待我更改select的值。我还试着把它包在窗户里面。加载时,我试图在网站上实现,但它只是结束了一个无尽的循环。

我对addEventListener有什么误解,这里出了什么问题?老实说,我看不出来。

这可能是一些非常简单的事情,但我已经尝试和研究了一段时间,就是不知道我做错了什么

考虑以下代码:

document.getElementById('showforumJump').addEventListener("change", forum_jump.submit(), false );

您正在将"change"事件绑定到forum_jump.submit()的输出。尝试将其封装在函数中,以防forum_jump.submit()依赖于this符号:

document.getElementById('showforumJump').addEventListener("change", function() { forum_jump.submit.apply(forum_jump, arguments); }, false );

如果在不带参数的情况下调用submit(),这对您的情况来说可能是多余的。你可以直接去掉括号:

document.getElementById('showforumJump').addEventListener("change", forum_jump.submit, false );

apply构造用于转发传递给函数的所有参数,这里可能不需要。有关作用域和'this'符号的解释,请参见以下示例:

http://odetocode.com/blogs/scott/archive/2007/07/04/function-apply-and-function-call-in-javascript.aspx

forum_jump.submit()不应该包含(),因为它是执行的引用,而不是执行本身:

document.getElementById('showforumJump').addEventListener("change", forum_jump.submit, false );

最新更新