Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/448.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用javascript将表单上的按钮作为要按下的目标_Javascript_Dom_Forms - Fatal编程技术网

使用javascript将表单上的按钮作为要按下的目标

使用javascript将表单上的按钮作为要按下的目标,javascript,dom,forms,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

我知道,使用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>


…这样就好像用户单击了提交?

您可以创建一个函数:

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

双方都将提交表单。

您可以创建一个函数:

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

两者都将提交表单。

为表单指定名称属性。然后可以执行document.name.submit()。i、 e


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

编辑:


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

为表单指定名称属性。然后可以执行document.name.submit()。i、 e


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

编辑:

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

放入链接:

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();
}
加入链接:

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


对于表单,使用名称比使用id更常见,至少在这个特定问题上是这样。不幸的是,我无法控制htmlshouldn't id='auth-allow'调用submit?@yopefonic否,
submit()
方法仅为表单元素定义是的,无论您是否来自同级。但是您仍然需要调用javascript的一部分。更新:将带有事件侦听器的代码放在我的answerfor表单中使用名称比使用id更常见,至少在这个特定问题上。不幸的是,我无法控制htmlshouldn't id='auth-allow'调用提交?@yopefonic否,
submit()
方法仅为表单元素定义是,你是否来自兄弟姐妹并不重要。但是您仍然需要调用javascript的一部分。更新:将带有事件侦听器的代码放在我的回答中不要将JavaScript代码放在HTML attributes@sime中是的,没错,这是一个关于如何使用本地对象实现结果的简单演示。当附加事件时,元素可以用完全相同的方式来完成。OP没有说他想在点击锚时提交表单。他问他如何以编程方式触发表单提交。不要将JavaScript代码放在HTML attributes@sime中是的,没错,这是一个关于如何使用本地对象实现结果的简单演示。当附加事件时,元素可以用完全相同的方式来完成。OP没有说他想在点击锚时提交表单。他问如何以编程方式触发表单提交。对不起,我无法更改htmlCurrent最佳实践建议您应避免使用名称访问html元素。使用Šime Vidas answer。根据我的经验(作为一名专业的web开发人员),当我专门解决在js中提交表单的问题时,使用名称更为常见。对不起,我无法更改htmlCurrent最佳实践建议您应避免使用名称访问html元素。在我(作为一名专业的web开发人员)的经验中,当我专门解决在js中提交表单的问题时,使用Šime Vidas answer.这个名称更为常见。您的表单元素不包含任何表单字段。此外,您正在将锚点上的type属性设置为“submit”。但是锚点上的type属性有一个不同的功能:您应该使用以下内容:
有几个表单字段,我已经忽略了它们。关于type属性,您可能是对的——但是,我无法控制html。(顺便说一下,这是flickr的标准身份验证代码)那么,你在使用JS库吗?不,没有JS库。我正在为iPhone UIWebView使用stringByEvaluatingJavaScriptFromString方法,所以我不能使用库Hehe,类名是“Butt”。表单元素不包含任何表单字段。此外,您正在将锚点上的type属性设置为“submit”。但是锚点上的type属性有一个不同的功能:您应该使用以下内容:
有几个表单字段,我已经忽略了它们。关于type属性,您可能是对的——但是,我无法控制html。(顺便说一下,这是flickr的标准身份验证代码)那么,你在使用JS库吗?不,没有JS库。我在iPhone UIWebView中使用stringByEvaluatingJavaScriptFromString方法,所以我不能使用库Hehe,类名是“Butt”。