有一个奇怪的问题,情况有点独特,因为我想在服务器端和客户端的实例中显示/隐藏 div,因此我无法将其更改为面板。
我必须更改其可见性客户端的当前代码是:
$('#<%= txtSurname.ClientID%>').on('input', function hideControl() {
var current = $('#<%= txtSurname.ClientID%>').val();
var surname = $('#<%= hdnSurname.ClientID%>').val();
if (current == surname) {
$('#pnlReason').hide()
console.log('hiding');
} else {
$('#pnlReason').show()
console.log('showing');
}
});
当用户单击按钮时,页面将验证并刷新,并且面板将再次呈现为不可见。因此,我想在页面加载时再次运行此代码,以便如果运行页面验证时两个变量仍然不同,则面板仍然可见。这就是我所说的服务器端:
Page.ClientScript.RegisterStartupScript(Page.GetType(), "ShowHide",
"$(document.ready(hideControl()));", True)
但是,当我尝试运行它时,它说 hideControl 未定义,有什么想法出了什么问题吗?
最佳答案
你可以像这样重新组织你的jquery,一旦页面刷新,你就可以在文档末尾执行你的函数,而不需要RegisterStartupScript()
:
//shorthand for document.ready
$(function () {
var hideControl = function() {
var current = $('#<%= txtSurname.ClientID%>').val();
var surname = $('#<%= hdnSurname.ClientID%>').val();
if (current == surname) {
$('#pnlReason').hide()
console.log('hiding');
} else {
$('#pnlReason').show()
console.log('showing');
}
}
$('#<%= txtSurname.ClientID%>').on('input', function () {
hideControl();
});
//call it at end of ready function:
hideControl();
};
关于javascript - 使用 vb.net 在代码中调用 jquery 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33277937/