0

マスター ページを含む一般的な .NET ページがあります。Web ページにはasp:Button、javascript 関数を呼び出す がありますForm_Validator()Form_Validator()何を試しても、関数内でフォームを取得できません。常にヌルです。

私もこのようにフォームを渡す従来の方法を試しました: OnClientClick="Form_Validator(this.form);、しかし何も機能していません。マスターページと何か関係があると思いますか?

<asp:Button ID="cmdSubmit" runat="server" Text="Submit" OnClientClick="Form_Validator();" OnClick="cmdSubmit_Click" />

<script type="text/javascript">
function Form_Validator() {
var theForm = document.getElementById(this.Form1);
alert(theForm);
</script>
4

2 に答える 2

2

ASP.net は、ページにレンダリングされる ID である ClientID を備えています。あなたが使用することができます

<script type="text/javascript">
   function Form_Validator() {
   var theForm = document.getElementById("<%=this.Form1.ClientID%>");
   alert(theForm);
</script>

これにより、ページにレンダリングされた FormID が JavaScript に挿入されます。「静的」クライアント ID モードを使用していない場合、これは他のフォーム要素にもアクセスする方法になります。

例えば:

<form id="Form1" runat="server">
     <asp:TextBox ID="txtABox" runat="server" />
</form>
<script type="text/javascript">
   function Form_Validator() {
   var theForm = document.getElementById("<%=this.Form1.ClientID%>");
   alert(theForm);
   var aBox = document.getElementByID("<%=txtABox.CLientID%>")
</script>

補足として、組み込みの asp.net フォームバリデーターを調べます。また、asp.net バリデーターの詳細な説明もあります。

于 2012-05-11T01:44:40.597 に答える
2

ASP.NET は "[Content Placeholder ID]_[Control]" のような命名規則を使用するため、おそらくマスター ページと関係があります。ただし、これは機能するはずです:

var theForm = document.forms[0];

別の方法として、"ClientIDMode" (page ディレクティブ内) を "static" に設定してみてください。これにより、ASP.NET は指定した方法で ID を割り当てるようになり、クレイジーなネストされた命名規則をすべて使用しなくなります。

于 2012-05-11T01:05:17.390 に答える