onchange="this.form.submit()" 对比两个提交按钮

Exi*_*xit 5 javascript forms

下拉触发 onchange 事件提交,当存在两个输入提交按钮时它无法工作。这是有道理的,那么您如何专门指定要处理的提交按钮?

<form>
<select onchange="this.form.submit()"></select>
<input type="submit" name="submit1" id="submit1" value="Submit 1" />
<input type="submit" name="submit2" id="submit2" value="Submit 2" />
</form>
Run Code Online (Sandbox Code Playgroud)

解决方案 使用下面的建议,此代码将起作用,以便如果从下拉菜单触发 onchange 则第二个提交按钮将执行:

<form>
<select onchange="var e=document.getElementById('killbox'); var s=document.getElementById('submit1'); e.removeChild(s); this.form.submit();"></select>
<div id="killbox"><input type="submit" name="submit1" id="submit1" value="Submit 1" /></div>
<input type="submit" name="submit2" id="submit2" value="Submit 2" />
</form>
Run Code Online (Sandbox Code Playgroud)

这是一种基本形式,将 Javascript 放入函数中而不是使用内联 Javascript 进行 onchange 当然不会有什么坏处。

小智 6

这是另一种可以使用的形式

<select class="form-control" id="search" name="search" value="search" onchange="this.form.submit()">
		<option>1</option>		
    <option>2</option>		
    <option>3</option>		
					
		</select>
Run Code Online (Sandbox Code Playgroud)


Tom*_*rdt 5

我很确定您可以简单地调用.submit()按钮本身:document.getElementById('submit1').submit()

-编辑-

解决方案二:仅删除其中一个按钮(使用removeChild(),这是一种常见的 DOM 方法)。