使用javascript定位要按下的表单上的按钮

时间:2011-01-21 00:34:50

标签: javascript dom forms

我知道,使用Javascript,我可以使用以下内容告诉表单提交:

document.forms[0].submit()

但是,如果页面上有多个表单(可以是任何顺序),我将如何定位此表单中的提交链接:

<form action="/services/auth/" method="post">
<div id="auth-allow-container" class="button-container">
<a class="Butt" id="auth-allow" type="submit" href="#"><span>SUBMIT</span></a>
<a class="Butt CancelButt" id="auth-disallow" href="#home"><span>CANCEL</span></a>
</div>
</form>

..这样就好像用户点击了SUBMIT?

3 个答案:

答案 0 :(得分:2)

你可以创造一个功能:

function submitFormById(id) {
    var el = document.getElementById(id);
    while ( el && el.tagName.toLowerCase() != 'form') {
        el = el.parentNode;
    }
    el && el.submit();
}

然后你就像这样使用这个函数:

submitFormById('auth-allow');
submitFormById('auth-disallow');

两者都将提交表格。

答案 1 :(得分:1)

为表单指定name属性。然后你可以做document.name.submit()。即

<form name="MyForm" ....>
<input ... />
</form>

然后您就可以document.MyForm.submit()

编辑:

正如您所说,您无法更改html,添加ID的解决方案也无济于事。您必须确定页面上哪个数字表单元素是特定的,并且执行docuemnt.forms [x] .submit(),其中x是此表单的索引。

答案 2 :(得分:1)

放入链接:

onclick="this.parentNode.parentNode.submit();"

如果你改变dom结构,这有点脆弱,但它是这种形式的通用链接

<强>更新

document.addEventListener("DOMContentLoaded", function() {
    document.getElementById("auth-allow").addEventListener("click", submithAuthForm, false);
}, false);

function submithAuthForm(){
    document.getElementById('auth-allow').parentNode.parentNode.submit();
}