我试图传递一个字符串,并在单击按钮后从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)是唯一的。