代码之家  ›  专栏  ›  技术社区  ›  Erx_VB.NExT.Coder

javascript问题

  •  0
  • Erx_VB.NExT.Coder  · 技术社区  · 15 年前

    使用onclick调用JS函数…

    onclick="SubmitAge(66, 'ctl00_MainContent_arTo_upAgeRange')" 
    

    函数只是从客户端调用updatepanel…但是在onclick=part处应该有它所说的对象!!!!

    这是函数,代码有什么问题吗?

    function SubmitAge(age, UpdatePanelID) {
        $get('HiddenAge').value = age;
        __doPostBack(UpdatePanelID);
    }
    

    edit:submitage函数在.js文件(agerange.js)中,只有移动到这里它才会停止工作:这里是ascx用户控件的链接方法/头,其中包含所有这些方法/头…

    %@control language=“vb”classname=“agerange”%

    %@寄存器assembly=“ajaxcontroltoolkit”namespace=“ajaxcontroltoolkit”tagprefix=“ajaxct”%

    script src=“agerange.js”type=“text/javascript”/脚本

    (此处删除箭头标记,因为它不会显示,提示:stackoverflow!!!!)

    我在服务器上这样打印…

    Public Sub AppendToSB(ByRef sb As StringBuilder, ByVal CurNo As Byte, Optional ByVal clickedNo As Byte = 0)
        Dim sConfirmClick = ""
    
        If clickedNo = CurNo Then   ' maybe dont make it clickable...
            sConfirmClick = "return confirm('The number " & CurNo.ToString & " is already selected, are you sure you want to select it again?');"
        End If
    
        sb.Append("<a href=""#"" onclick=""" & sConfirmClick & "SubmitAge(" & CurNo.ToString & ", '" & upAgeRange.ClientID &
         "')"" runat=""server"">" & CurNo.ToString & "</a>")
    
    End Sub
    
    2 回复  |  直到 15 年前
        1
  •  1
  •   Community CDub    7 年前

    在几次澄清后完成我的文章的重写:

    问题是ASPX页正在引用位于其他文件夹中的ASCX用户控件。那个ascx控件有一个html <script> 使用JS文件的相对路径的标记。

    解决方案是使用一些额外的代码正确地解析JS文件的URL:

    <script src="<%= ResolveClientUrl("MyScriptLibrary.js") %>" type="text/javascript">
    </script>
    

    为了防止多次引用脚本文件,我建议使用其他文章中指定的方法: ASP.NET dynamically insert code into head

    下面是用户控件代码中的内容:

    // Register a script reference: 
    Page.ClientScript.RegisterClientScriptInclude(GetType(), "myLibraryScript", "~/Scripts/MyScriptLibrary.js"); 
    
        2
  •  0
  •   Erx_VB.NExT.Coder    15 年前

    下面是我决定怎么做的,resolveclienturl很重要,静态链接并不总是有效,而且if检查将阻止脚本在同一页上多次使用控件时在同一页中添加多次…。

    if not page.clientscript.isclientscriptincludenregistered(“agerangejs”)then'no point in registered it two!
    '并且它在头中注册,在应该的地方,而不是正文中的两个副本:)
    page.clientscript.registerClientScriptinclude(“ageRangeJS”,resolveClientURL(“ageRange.js”))'resolveClientURL(“ageRange.js”))
    结束如果
    < /代码> 
    
    

    我决定怎么做,resolveclienturl很重要,静态链接并不总是有效,而且如果检查将阻止脚本在一个页面中添加多次,如果您在同一个页面上多次使用该控件…

        If Not Page.ClientScript.IsClientScriptIncludeRegistered("AgeRangeJS") Then ' no point in registering it twice!
            ' AND its registered in the header, where it should be, not two copies in the body :)
            Page.ClientScript.RegisterClientScriptInclude("AgeRangeJS", ResolveClientUrl("AgeRange.js")) ' ResolveClientUrl("AgeRange.js")
        End If