2

このような単純なテキスト フィールドがあります。

<asp:TextBox ID="txtMyTextBox" runat="server" onblur="checkMyText()"  ></asp:TextBox>

私のページの上部には、この小さな JS があります。

<script type="text/javascript">
    function checkMyText() {
        var args = document.getElementById('<% =txtMyTextBox.ClientId %>').value;
        alert(args);
        }
</script>

これは正常に動作します。これをしようとすると。

 <asp:TextBox ID="txtMyTextBox" runat="server" onblur="checkMyText("txtMyTextBox")"  ></asp:TextBox>

. . .

 function checkMyText(ElementID) {
                var args =  document.getElementById('<% =ElementID.ClientId %>').value;
                alert(args)
                }

失敗します。

私はjavascriptがまったく初めてなので、変数の受け渡しや文字列内での処理方法がわかりません。ID="txtMyOtherTextBox" を追加する場合のアイデアは、そのボタンに対して onblur="checkMyText("txtMyOtherTextBox")" を呼び出すだけです。文字列を JavaScript にするにはどうすればよいですか?

4

3 に答える 3

3

この行で

<asp:TextBox ID="txtMyTextBox" runat="server" 
      onblur="checkMyText("txtMyTextBox")"  ></asp:TextBox>

2 つの主なエラーがあります。

  1. 間違ったクォータ ->"checkMyText("txtMyTextBox")"
  2. ページにレンダリングされるのではなく、コード ビハインドに表示される ID を渡します。

通常、thisキーワードを使用して現在の要素を JavaScript 関数に渡します。例えば:

<asp:TextBox ID="txtMyTextBox" runat="server" onblur="checkMyText(this)"/>

function checkMyText(me) {
                var args =  me.value;
                alert(args)
                }
于 2013-02-27T16:55:26.423 に答える
2

Textbox の ClientId を javacscript 関数に渡す必要があります。Javascript を実行している間は、サーバー側のコードを使用できません (これはElementID.ClientId、js 関数を呼び出して実行しようとしています。

サーバー上にある間に ClientId を決定し、関数呼び出しで文字列として配置します。onblur="checkMyText('<%=txtMyTextBox.ClientId %>')"その後、javascript 関数で id を操作できます。

これを試して:

<asp:TextBox ID="txtMyTextBox" runat="server" onblur="checkMyText('<%=txtMyTextBox.ClientId %>')"></asp:TextBox>

<script type="text/javascript">
    function checkMyText(id) {
        var args = document.getElementById(id).value;
        alert(args);
        }
</script>
于 2013-02-27T16:51:23.470 に答える
0

ページ ソースを見ると、ページごとに同じ「コントロール」を複数回使用する場合 (たとえば、ニュース ウィジェットなど) に、ASP.NET が真にユニークなものを維持するために、読みやすい ID を変更していることがわかります。 )

私は ASP.NET のその側面が好きではなく、自分の ID を手動で管理すること (および有用な場合はクラスを使用すること) を好むためClientIDMode="Static"、ページ ディレクティブで使用しています。これにより、ASP.NET は、ソース コードで指定したとおりに ID を使用するように指示され、(現在) 機能しない 2 番目の例で示したとおりに正確に実行できるようになります。

つまり、アリストスの答えが好ましい解決策です

于 2013-02-27T16:55:19.470 に答える