【发布时间】:2012-07-09 17:43:21
【问题描述】:
表格
<form onsubmit="OnSubmitForm();" action="<?php echo base_url(); ?>" method="post" autocomplete="off" name="register_form" id="register_form">
提交按钮
<input id="register_submit" name="submit" class="medium" type="submit" value="Submit" onclick="document.pressed=this.value"/>
提交链接
<a href="javascript: Submit();">full registration</a>
Javascript/jQuery
function OnSubmitForm()
{
if(document.pressed == 'Full registration')
{
alert('full');
document.register_form.action ="<?php echo base_url(); ?>account/register";
}
else
if(document.pressed == 'Submit')
{
alert('light');
document.register_form.action ="<?php echo base_url(); ?>account/register_light";
}
}
function Submit()
{
document.pressed = 'Full registration';
$('#register_form').submit();
}
如果单击提交按钮,则会触发“light”警报,并且表单会按原样提交到“account/register_light”。
但是,如果点击链接,则会触发“完整”警报,但不会提交表单。更多点击链接不会触发警报或提交表单。
如果在单击链接后单击提交按钮,则表单将提交到“帐户/注册”(无警报)。 Whitch 是我希望链接提交表单的地方,而不是提交按钮通常提交表单的地方。
为什么 .submit() 不提交表单? 我在这里很困惑,任何对正在发生的事情的见解都将不胜感激。
【问题讨论】:
-
如果您使用 jQuery,您应该真正考虑使用 jQuery 来绑定您的事件处理程序。内联事件处理程序声明(
onsubmit、onclick等),更糟糕的是,在锚点的href属性中使用 javascript 已经过时了,而且会合并内容和功能。 -
以防我下面的答案不起作用,您可能需要在函数结束之前提醒
document.register_form.action以查看它实际包含的内容。 (只是要仔细检查它是否符合您的期望。 -
另外我相信内联 javascript 被 W3C 贬低,而不是在 HTML 中,而是在纯 XML 中,我可能错了,但我很确定它仍然支持 HTML(可能不是 5)但不支持 XHTML(这表明仅使用外部脚本)。我不是网络开发人员,只是软件,所以我可能错过了一些关于内联 javascript 的内容,但据我所知,在 HTML 中使用内联 javascript 并没有错。
-
啊,不好意思,我误读了你的问题 :)。
-
@AnthonyGrist 我最初没有使用 jQuery。我只是看看我是否得到了与 document.register_form.submit() 不同的结果。我一知道有什么问题就清理它。
标签: javascript jquery html