2

この JavaScript を aspx ページに配置すると、ボタンのクリック時にパネルが期待どおりに表示されます。

 <script type="text/javascript">
 function ShowPopUp() {
     $('#<%= upNewClient.ClientID %>').show();
 }
 </script>

 <asp:Button ID="btnNewClient" runat="server" OnClientClick="javascript: ShowPopUp(); return false;" />

しかし、関数なしでこれを実行しようとすると、機能しません:

<asp:Button ID="btnNewClient" runat="server" OnClientClick="javascript: $'(%<= upNewClient.ClientID %>'.show(); return false;"/>

ページが点滅し、JavaScript コンソールにエラーが表示される可能性がありますが、表示される速度が速すぎて読めません。

では、まったく同じコード行が関数の外で機能しないのはなぜでしょうか?

EDIT: 私はこのコードを数回書き直しました(私は実際にコードビハインドでそれをやろうとしています)、最初の投稿の直前にタイプミスしました. 実際のボタンタグは次のとおりです。

<asp:Button ID="btnNewClient" runat="server" Text="Add New Client" OnClientClick="javascript: $('#<%= upNewClient.ClientID %>').show(); return false;" />

これにより、javascript コンソールに次のようなエラーがすぐに表示されます。 Uncaught Error: Syntax error, unrecognized expression: #<%= upNewClient.ClientID %>

4

4 に答える 4

3

インラインの ID セレクターがなく、#引用符が正しく配置されていません。閉じ括弧がありません

それで

$'(%<= upNewClient.ClientID %>'.show();

する必要があります

$('#<%= upNewClient.ClientID %>').show();
于 2013-03-16T16:04:56.233 に答える
2

構文エラーがあります。$'(%<=である必要が$('#<%=あり、の閉じ括弧を忘れました$(...)

于 2013-03-16T16:06:30.897 に答える
1

サーバー側コントロールの<%= ... %>属性内では構文がサポートされていないため、すべてがブラウザーに送信されます。

<input type="submit" name="btnNewClient" value="Add New Client"
    onclick="javascript: $('#&lt;%= upNewClient.ClientID %>').show(); return false;"
    id="btnNewClient" />

jQuery は式を解析できないため、例外がスローされます。

OnClientClick代わりに、コード ビハインドからボタンのプロパティを設定できます。

<asp:Button ID="btnNewClient" runat="server" Text="Add New Client" />
protected override void Render(HtmlTextWriter writer)
{
    this.btnNewClient.OnClientClick =
        "$('#" + this.upNewClient.ClientID + "').show(); return false;";
    base.Render(writer);
}

(プロパティを( 、、またはRenderの代わりに) に設定すると、値がビューステートを不必要に肥大化するのを防ぎます。)OnInitOnLoadOnPreRender

于 2013-03-16T16:22:26.553 に答える
-2

問題は構文にあると思います。このように変更してみてください

<asp:Button ID="btnNewClient" runat="server" OnClientClick="$('#<%= upNewClient.ClientID %>').show(); return false;"/>
于 2013-03-16T16:03:42.957 に答える