我觉得不得不问这个 head desk 我真的很傻但是我不知道为什么这段代码不能正常工作呢叹息
当我从任一下拉列表中选择并且表单未提交时,我收到以下JavaScript错误。
未捕获的TypeError:对象#的属性'submit'不是函数
<form action="categories/view/52" method="post" accept-charset="utf-8" id="myform" name="myform">
<select name="sort" ID="sort_type" onchange='document.forms["myform"].submit();'>
<option value="label">Sort</option>
<option value="price-low-high">Price: Low - High</option>
<option value="price-high-low" selected="selected">Price: High - Low</option>
<option value="name-a-z">Name A - Z</option>
<option value="name-z-a">Name Z - A</option>
<option value="date-added-new">Date Added - New</option>
<option value="date-added-old">Date Added - Old</option>
</select>
<select name="limit" ID="sort_type" onchange='document.forms["myform"].submit();'>
<option value="items_3" selected="selected">3</option>
<option value="items_50">50</option>
<option value="items_100">100</option>
<option value="items_all">all</option>
</select>
<input type="submit" name="submit" value="submit" />
</form>
答案 0 :(得分:5)
因为你有:
<input type="submit" name="submit" value="submit" />
提交函数已被HTMLElementNode破坏。
简单的解决方案是重命名,或删除名称。
<input type="submit" value="submit" />
如果你不能重命名它(因为你的服务器端代码取决于提交的那个值,而你无法更改服务器端代码),那么你可以:
document.createElement('form').submit.call(document.forms["myform"]);
答案 1 :(得分:3)
尝试调用form.submit()时出错的原因是您的提交按钮名为“submit”。这意味着Form对象的“submit”属性现在是对提交按钮的引用,覆盖了表单原型的“submit”方法。
重命名提交按钮将允许您无错误地调用submit()方法。
<input type="submit" name="submitEle" value="submit" />
应该工作