2013-02-07 67 views
0

我从ASP.Net调用jQuery模态对话框函数,我传递一些参数给它。其中一个参数包含#符号,因此,jQuery模态对话框调用不会执行。jQuery传递字符串参数与数字(#)符号

解决此问题的方法是什么?我试图用这个'\#'替换字符串'#'来逃避字符,但仍然无法工作。

谢谢。从我的头顶

代码..

String var1 = "#3 and #4 should be on the list."; 
lnkDetails.OnClientClick = "openDialog('" + var1 + "'); 

和正常jQuery的对话框功能:

function openDialog(varPassed) { 
      $("#divModal").dialog({ 
       width: 600, 
      }); 

      $('#<%= label1.ClientID %>').text(varPassed); 

更新:看来模态不显示,因为这条线组成:

$('#<%= label1.ClientID %>').text(varPassed); 

当值被分配到模态对话框本身的div内部的标签时,模态窗口不显示。

这是模态窗口。

<div id="divMaterialDetails" title="Material Details" style="display:none" > 
    <asp:Label ID="label1" runat="server" CssClass="formLabel"/> 
</div> 

如果我注释掉价值的分配,模态出现。

那么我怎样才能将传递给模态的值分配给标签,以便模态显示出来?

+0

尝试使用'%23'代替。它是'#' – ShaneA

+0

的URL编码值或者更一般地说,从C#'HttpUtility.UrlEncode(str)' – ShaneA

+0

尝试%23,jquery函数仍然不会被调用。尝试了UrlEncode,但函数也替换了其他字符串值。 – Angelo

回答

1

标志是不是一个问题。 dialog方法不是jQuery本身的一部分,但是它是jQuery UI的一部分。你是否也包含jQuery UI库,作为兼容版本的jQuery?评论/删除$("#divModal").dialog电话,看看是否一切正常。我测试了这个和没有这个部分,并用这条线它没有执行后导致错误的行。当我包含jQuery UI时,它开始工作。

一般来说,如果您不确定代码有什么问题,请尝试注释掉一些您认为可能导致问题的部分,只要注释某些内容/删除内容即可解决问题。通过逐个消除可能的“麻烦制造者”来查明发生了什么更容易。当然,使用调试器 - 对于Firefox来说,使用JavaScript控制台的Firebug扩展非常有用。您可以阅读可能导致问题真正根源的错误消息。

而且顺便说一句,如果你不希望浏览器跟随点击链接,考虑增加return false;OnClientClick这样的:

lnkDetails.OnClientClick = "openDialog('" + var1 + "');return false;"; 

检查this question有关更多信息。

编辑:

我的版本可上网:

一切都在Default.aspxDefault.aspx.cs文件,在Default.aspx.designer.cs创建控件。您可以通过CodeRun发布您的版本,向我们展示可能导致问题的上下文和其他元素。

+0

是的,我引用了jQUIUI库。令人惊讶的是,只有当传递的字符串包含#号时才会发生这种情况。 – Angelo

+0

@Angelo我编辑了我的答案,其中包含指向源代码和编译后版本的链接。您可以尝试使用CodeRun托管导致问题的代码的重要部分,以便我们可以对其进行调查。 –

+0

我想我找到了这个错误。我会更新上面的问题。 – Angelo