【问题标题】:Calling a jquery function in code using vb.net使用 vb.net 在代码中调用 jquery 函数
【发布时间】:2015-10-22 09:40:04
【问题描述】:

有一个奇怪的问题,情况有点独特,因为我想在服务器端和客户端的实例中显示/隐藏一个 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 未定义,有什么问题吗?

【问题讨论】:

  • $('#&lt;%= txtSurname.ClientID%&gt;').on('input', function hideControl() { 是错误的。如果您在js 文件中有此代码,并且页面中包含相同的代码,则无需通过Page.ClientScript 调用它,上面的行应该和 anonymous function 在一起过 喜欢这个$('#&lt;%= txtSurname.ClientID%&gt;').on('input', function() {

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


【解决方案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();
};

【讨论】:

  • 看起来不错,虽然 hideControl 仍然未定义?
  • 你还在用 registerstartup 方法吗?
  • 啊,我的错,删除它并完全从客户端尝试,但是当按下保存按钮时,该功能没有运行?
  • 假设您有文档准备功能等,当帖子完成后,它应该再次重新运行脚本。还要确保脚本位于 之间
  • 复制并粘贴我提供的代码,看看你得到了什么
【解决方案2】:

由于hideControl 被定义为匿名函数,您无法访问它。您必须在on 事件处理程序之外定义函数hideControl。将函数放在页面的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)

【讨论】:

    猜你喜欢
    • 2012-11-06
    • 1970-01-01
    • 1970-01-01
    • 2013-08-27
    • 2013-06-28
    • 2013-10-01
    • 1970-01-01
    • 2012-06-17
    • 1970-01-01
    相关资源
    最近更新 更多