使用vb.net

时间:2015-10-22 09:40:04

标签: javascript jquery html asp.net vb.net

有一点奇怪的问题,情况有点独特,因为我想在服务器端和客户端的实例中显示/隐藏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是未定义的,任何想法都出错了?

2 个答案:

答案 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)