繁体   English   中英

onchange this.form.submit()无法用于网络表单

[英]onchange this.form.submit() not working for web form

用这种方式工作太久了...但是似乎无法找出问题所在。 已经阅读了许多关于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检查器中,我看到一个错误“未捕获的TypeError:无法调用null的方法'submit'”

我也尝试了onchange =“ javascript:document.orderbyfrm.submit”,但这也不起作用。

可能您有一个称为form元素或JS对象,或者submit某个地方submit ,与真实表单冲突。

最安全的方法是使用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);

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

对不起大家! 我发现了问题。 我在此表格附近有一个坏的div

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

固定:

非常感谢大家的帮助!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM