5

次のような JavaScript 関数を呼び出している ASP.Net ページがあります。

 Enter server name: <asp:TextBox ID="txt_name" runat="server"></asp:TextBox>
 <asp:Button ID="btn_view" runat="server" OnClick="View_btn_click" OnClientClick="return  AlertOnGo('View Configuration',document.getElementById('<%= txt_name.ClientID %>').value)" Text ="GO!" />

しかし、[GO] ボタンをクリックすると、次のエラーが表示されます。

JavaScript ランタイム エラー: 未定義または null 参照のプロパティ '値' を取得できません

ボタンのレンダリングされたコードを表示すると、次のようになります。

<input type="submit" name="btn_view" value="GO!" onclick="return AlertOnGo('View Configuration',document.getElementById('<%= txt_name.ClientID %>').value);" id="btn_view" />

適切な ClientID を入れていません。テストボックスのCLientIDModeを静的に設定しようとしましたが、助けにはなりませんでした。

この質問は、この未回答の質問に似ています。

4

7 に答える 7

10

この問題にはいくつかの解決策があります。

ASP.NET コントロールの OnClientClick 属性内で txt_name.ClientID を評価しようとすると、コントロール内でのみ問題が発生するため、より簡単な方法の 1 つは名前を JavaScript 変数に移動することです。

<script>
var txtName = '<%= txt_name.ClientID %>';
</script>

Enter server name: <asp:TextBox ID="txt_name" runat="server"></asp:TextBox>
 <asp:Button ID="btn_view" runat="server" OnClick="View_btn_click" 
OnClientClick="return  AlertOnGo('View Configuration', 
document.getElementById(txtName).value)" Text ="GO!" />
于 2013-04-22T12:48:02.400 に答える
0

-- 編集された回答 -- aspx

<asp:Button ID="btn_view" runat="server" OnClick="View_btn_click" OnClientClick="javascript:return AlertOnGo('View Configuration');" テキスト="GO!" />

脚本

関数 AlertOnGo(モード)
{
  var btnId = '<%= txt_name.ClientID %>';
  var value=document.getElementById(btnId).value;

//あなたのコード

false を返します。
}
于 2013-04-22T12:44:49.447 に答える
0

asp.net Web コントロールのプロパティで <%= %> を使用しています。コントロール全体が html に置き換えられるため、うまくいくとは思いません。

JavaScript をスクリプト ブロックに移動し、イベント ハンドラーをすべてインラインにするのではなく、コードでアタッチします。

Enter server name: <asp:TextBox ID="txt_name" runat="server"></asp:TextBox>
 <asp:Button ID="btn_view" runat="server" OnClick="View_btn_click" Text ="GO!" />
<script>
document.getElementById('<%= btn_view.ClientID %>').attachEvent('click', function() {
     return AlertOnGo('View Configuration',
                        document.getElementById('<%= txt_name.ClientID %>').value);
});
</script>
于 2013-04-22T12:45:04.543 に答える
0

別の解決策は、ブラウザに移動して、昆虫要素がテキストボックスの動的IDを読み取り、次のようにjavascriptで設定できることです。

var ddlFunction = document.getElementById('ctl00_SPWebPartManager1_g_ecede3f6_2b87_405a_af1b_70401bb8d4c7_ddlFunction'); 

HTML:

<asp:DropDownList ID="ddlFunction" runat="server" CssClass="dropDownClass">
    <asp:ListItem Selected="True">Select One</asp:ListItem>
    <asp:ListItem>Sample 1</asp:ListItem>
    <asp:ListItem>Sample 2</asp:ListItem>
</asp:DropDownList>
于 2016-10-24T14:29:36.403 に答える
0

String.Concat を使用することを好みます。アポストロフィの代わりに \u0027 を使用できます。

OnClientClick='<%#String.Concat("document.getElementById(\u0027", AddToCartBtn.ClientID.ToString(), "\u0027).value = \u0027Adding...\u0027;")%>'
于 2016-09-19T00:29:30.497 に答える