VB调用javascript资源代码



我试图传递一个字符串,并在单击按钮后从vb.net中的代码后面调用一个javascript函数。javascript在一个单独的文件中。

下面是按钮的代码:

/MyProject/myfile.aspx

<HTML>
...
...
<asp:textbox id="txtSearch" runat="server" Width="120px" CssClass="midField"></asp:textbox>
<input class="midBtn" id="btnSearch" type="button" value="Search" name="btnSearch" runat="server">
...
...
<script src='<%= Page.ResolveClientUrl("~/script/functions/myFunc.js")%>' ></script>
</HTML>

/MyProject/myfile.aspx.vb

Private Sub btnSearch_ServerClick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSearch.ServerClick
   Dim searchString As String
   searchString = txtSearch.Text
   Dim rsname As String = Page.ResolveClientUrl("~/script/functions/myFunc.js")
   Page.ClientScript.RegisterStartupScript(Me.GetType(), "mySearch", "mySearch('" & searchString & "')", True)
End Sub

/MyProject/script/functions/myFunc.js

function mySearch(searchString){
// ...
// logic for mySearch
// ...
}

我无法调用javascript函数,需要引用.apsx页面末尾的.js文件。我从调试器中得到的错误是Uncaught ReferenceError: mySearch is not defined,请帮助。

如果选择的标准是下拉列表,可能更好的解决方案(我使用的是jquery)是将js文件放在页面末尾,并检查javascrpit中的下拉值(此处设置为变量),并拦截.NET按钮的回发:

<script type="text/javascript">
    $(document).ready(function () {
        var dropdown = 1;
        $('.midBtn').click(function () {
            if (dropdown == 1) {
                mySearch($('.midField').val());
                return false;
            } else {
                // ... postback
            }
        });
    });
</script>

在这种情况下,您必须确保类选择器(midBtn和midField)是唯一的。

相关内容

最新更新