0

フォーム

<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」に送信されます。

ただし、リンクがクリックされると、「フル」アラートがトリガーされますが、フォームは送信されません。リンクをさらにクリックしても、アラートはトリガーされず、フォームは送信されません。

リンクがクリックされた後に送信ボタンがクリックされると、フォームは「アカウント/登録」に送信されます(アラートなし)。リンクがフォームを送信する場所であり、送信ボタンが通常フォームを送信する場所ではありません。

.submit()がフォームを送信しないのはなぜですか?私はここで混乱しています。何が起こっているのかについての洞察は大いにありがたいです。

4

1 に答える 1

0

私はあなたの質問を私の最初の回答と読み違えていました。

とにかく、フォームが送信されていない、または少なくとも期待どおりではない理由は、私が知るonsubmit限り、送信がユーザーによって呼び出されない限り、ブラウザーがメソッドを起動しないためです。使用.submit()しても発火しません。

回避策 (これでうまくいくはずです) は、Submit 関数を次のように変更することです。

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

設定についても不明ですdocument.pressed。これを行うことができない場合があります。そうでない場合は、いつでもパラメーターを OnSubmitForm 関数に渡すことができます。

于 2012-07-09T09:41:30.020 に答える