1

この方法であまりにも長い間作業してきました...しかし、問題を特定できないようです。スタックオーバーフローやその他の場所で、すでに何十もの記事を読んでいます。

クリックして値を変更すると、自動送信されません:

   <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: null のメソッド 'submit' を呼び出せません」というエラーが表示される onchange

onchange="javascript:document.orderbyfrm.submit" も試しましたが、どちらもうまくいきませんでした。

4

2 に答える 2

6

おそらく、formまたはsubmitどこかに呼び出された要素または JS オブジェクトがあり、実際のフォームと競合しています。

最も安全な方法は、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 に答える