我必须更改其可见性客户端的当前代码是:
$('#<%= 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是未定义的,任何想法都出错了?
答案 0 :(得分:1)
你可以像这样重新组织你的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();
};
答案 1 :(得分:0)
由于hideControl
被定义为非正常函数,因此无法访问它。您必须在hideControl
事件处理程序之外定义函数on
。将函数放在页面中的script
标记内,而不是单独的文件中:
<script>
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');
}
}
</script>
然后在没有括号的情况下调用服务器端的函数:
Page.ClientScript.RegisterStartupScript(Page.GetType(), "ShowHide",
"$(document.ready(hideControl));", True)