1

以这种方式工作太久了……但似乎无法确定问题所在。已经阅读了数十篇关于 stackoverflow 和其他地方的文章。

当我单击并更改值时,它不会自动提交:

   <form id="orderbyfrm" name="orderbyfrm" action="http://staging.whiterabbitexpress.com/" method="post" class="orderbyfrm">
            <input name="s" value="<?php echo $wre_search_txt?>" type="hidden">
            <label for="orderby" class="sortByLabel">Sort by&nbsp;</label>
            <select class="sortByDropdown" name="orderby" id="orderby" onchange="this.form.submit();">
                <option value="Relevance">Relevance</option>
                <option value="likes" selected="selected">Likes</option>
            <option value="comments" selected="comments">Comments</option>
            </select>
</form>

在 Chrome 检查器中,我看到一个错误“Uncaught TypeError: Cannot call method 'submit' of null” onchange

我也试过 onchange="javascript:document.orderbyfrm.submit" 但这也没有用。

4

2 回答 2

6

可能你在某个地方调用了元素或 JS 对象formsubmit与真实形式相冲突。

最安全的方法是使用 document.getElementById:

<select onchange="SubmitForm('orderbyfrm');">

和 JavaScript:

function SubmitForm(formId) {
    var oForm = document.getElementById(formId);
    if (oForm) {
        oForm.submit(); 
    }
    else {
        alert("DEBUG - could not find element " + formId);
    }
}

使用良好的旧警报进一步调试..而不是alert("DEBUG ...有这个:

var sDebugInfo = "found " + document.forms.length + " forms: \n";
for (var i = 0; i < document.forms.length; i++) {
    var curForm = document.forms[i];
    sDebugInfo += "name: " + curForm.name + ", id: " + curForm.id;
    sDebugInfo += "\n";
}
alert(sDebugInfo);

根据你得到的,调试应该继续。

于 2012-09-05T06:48:36.387 回答
0

对不起大家!我发现了问题。我在这个表单周围有一个损坏的 div

<div id="orderby" class="orderby
<form id="xxx" name="xxx" action="#" method="post" class="orderbyfrm">

固定的:

真的很感谢大家的帮助!

于 2012-09-05T07:20:08.140 回答