onchange this.form.submit() not working for web form

匿名 (未验证) 提交于 2019-12-03 02:38:01

问题:

been working on this way too long...but can't seem to identify the problem. Already read dozens of articles on stackoverflow and elsewhere.

when I click and change the value, it doesn't auto-submit:

   <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>

in Chrome inspector I see an error "Uncaught TypeError: Cannot call method 'submit' of null" onchange

I also tried onchange="javascript:document.orderbyfrm.submit" but that didn't work either.

回答1:

Probably you have element or JS object called form or submit somewhere, conflicting with the real form.

Most safe way is using document.getElementById:

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

And the JavaScript:

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

Further debugging with good old alert.. instead of the alert("DEBUG ... have this:

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);

Depending on what you get, debug should continue.



回答2:

sorry guys! I found the problem. I had a broken div around this form

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

fixed:

Really appreciate your help everyone!



标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!