2013-03-16 45 views
2

如果我把这个JavaScript我的aspx页面上,面板显示如预期在按一下按钮:为什么JavaScript行必须在函数中才能正常工作?

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

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

但是,如果我尝试这样做W/O功能,这是行不通的:

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

页面闪烁,并且可能在我的javascript控制台中出现错误,但它来得太快,我无法阅读它。

那么,为什么不完全相同的代码行在函数之外工作?

编辑: 我已经重写这段代码几次(实际上,我试图做到这一点在后面的代码),我输入错误的时间只是我的最初发布之前。实际的按钮标签是:

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

这闪烁在我的JavaScript控制台的错误非常迅速,我认为说: 未捕获的错误:语法错误,无法识别的表达式:#<%= upNewClient.ClientID%>

+2

1)您不必将'javascrpt:'2)我认为它没有形成好 – codingbiz 2013-03-16 16:04:55

+0

阅读您发布的代码。 – ShuklaSannidhya 2013-03-16 16:06:39

+0

删除“javascript:”不起作用(即使使用正确的语法) – user1744966 2013-03-16 16:22:00

回答

1

<%= ... %>语法是不是一个服务器端控件的属性中支持的右括号,所以整个事情被发送到浏览器:

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

由于jQuery无法解析表达式,因此会引发异常。

<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设置属性(而不是,比方说,OnInitOnLoad,或OnPreRender)防止:

相反,你可以从代码隐藏设置按钮的OnClientClick财产值不必要的膨胀视图状态。)

+0

太棒了。我发布的aspx代码试图解决背后的代码问题。虽然我仍然不明白为什么相同的代码行可以在函数中工作,但不在aspx页面的函数之外,您的答案解决了我的实际问题。 我想我以为脚本字符串是呈现给页面,因此我需要<%=... %>就像我在aspx页面。现在我明白了。谢谢! – user1744966 2013-03-16 16:29:26

+0

我已经更新了我的答案,以显示实际获得的效果。 '<%= ... %>'语法在'

-2

我认为这个问题是语法,尝试改变它像这样

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

修复了语法错误问题。现在它在我的JavaScript中闪烁很快,很难看到,但我相信它是:未捕获的错误:语法错误,无法识别的表达式:#<%= upNewClient。ClientID%> – user1744966 2013-03-16 16:07:32

+1

使用'$('#<%= upNewClient.ClientID%>')。show();' – Anujith 2013-03-16 16:08:42

+0

ooo yea,我frgt that ...对不起 – Nikhar 2013-03-16 16:09:51

3

你缺少你的内联# id选择,并错误地放在引号..缺少一个右括号

所以

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

应该

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

你有一个语法错误。 $'(%<=应该$('#<%=,你忘了$(...)

+0

编辑了正确的语法和错误的帖子,我想我在javascript console ... – user1744966 2013-03-16 16:18:13

相关问题