0

私はasp.netアプリケーションに取り組んでいます。私のアプリケーションのマスター ページには、サイドバー div があります。次のようなサブスクリプション用のフォームを挿入しました。

<form method="post" action="https://app.icontact.com/icp/signup.php" name="icpsignup" id="icpsignup3297" accept-charset="UTF-8" onsubmit="return verifyRequired3297();" >
   ...
   <input type="submit" name="Submit" value="Get Deals">
<form>

ボタンのクリック時に呼び出される JavaScript 関数は次のようになります。

<script type="text/javascript">

    var icpForm3297 = document.getElementById('icpsignup3297');

    if (document.location.protocol === "https:")
        icpForm3297.action = "https://app.icontact.com/icp/signup.php";

    function verifyRequired3297() {  
        alert('testing');     
        if (icpForm3297["fields_email"].value == "") {
            icpForm3297["fields_email"].focus();
            alert("The Email field is required.");
            return false;
        }
        return true;
    }
</script>

送信ボタンを押すと、ページがリロードされますが、フォームが他のページ (リダイレクト URL) にリダイレクトされません コードがマスター ページにあるためですか? テストアラートも表示されません。

マスターページのない新しいasp.netページでこのコードを使用すると、完全に機能します

4

1 に答える 1

0

OPによる質問コメントに基づいて...

ネストされたタグを持つことは無効な HTML です<form>(タグがマークされているかどうかに関係runat="server"なく)。たとえば、これは許可されておらず、失敗します...

<form>
  ...
  <form>
    ...
  </form>
  ...
</form>

私が考えられる唯一のことは、次のようなものです...

  • <form>メインの外で、質問のものに基づいて新しいものを作成します<form runat="server">
  • 渡す必要がある<form>すべてのフィールドを新しいフィールドに入力します<input type="hidden">
  • <form>ユーザーが使用するコントロール/レイアウトを残して、元の場所からタグを削除します
  • などのハンドラーonclick="submitMyForm();return false;"をオリジナルに設定し<input type="submit">ます (または、通常のボタン (HTML または ASP.NET ベース) に置き換えて、ハンドラーをそれに設定します)。
  • 呼び出す JavaScript 関数を作成する

JavaScript関数は次のようになります...

function submitMyForm(){
  document.getElementById("myNewFormCtrl1").value = 
    document.getElementById("<%=myOldFormCtrl1.ClientId%>").value;
  ...
  document.getElementById("myNewForm").submit();
}

には、フォームを受け取るページに渡される属性を指定する<input type="hidden">必要があることに注意してください。関数内で使用される属性nameも指定する必要があります。これらは同じである必要はないので、を明確でユニークなものに設定することをお勧めします。idgetElementByIdid

誰かがより優れた、よりシンプルでクリーンなソリューションを持っている場合、私は本当に興味があります.上記は素晴らしいとは思いませんが、うまくいくはずです.

于 2012-07-20T08:04:42.413 に答える