form.submit触发onsubmit但不提交

时间:2012-07-09 08:58:43

标签: javascript jquery html

表格

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

如果提交按钮被点击,则会触发“轻量级”警报,并且表单将按原样提交给“account / register_light”。

但如果链接被点击,则会触发“完整”警报,但不会提交表单。链接上的更多klicks不会触发警报也不会提交表单。

如果在链接被点击后点击了提交按钮,表单将被提交到“account / register”(无警报)。 Whitch是我希望链接提交表单的地方,而不是de submit按钮通常提交表单的地方。

为什么不.submit()提交表单? 我在这里很困惑,对于所发生的事情的任何见解都将受到高度赞赏。

1 个答案:

答案 0 :(得分:0)

我的第一个答案误读了你的问题。

无论如何,您的表单未被提交的原因,或者至少不是您期望的方式是因为据我所知,除非用户调用提交,否则浏览器不会触发onsubmit方法。使用.submit()不会导致它被触发。

解决方法(希望这应该有效)是将提交功能更改为以下内容。

function Submit()
{
    document.pressed = 'Full registration';
    OnSubmitForm();
    $('#register_form').submit();
}

我也不确定设置document.pressed,你可能无法做到这一点。如果没有,那么你总是可以将参数传递给OnSubmitForm函数。