ASP.net javascript在ASP:ImageButton上启动

ASP.net javascript在ASP:ImageButton上启动,javascript,jquery,asp.net,Javascript,Jquery,Asp.net,嘿,我一直在试图弄清楚,当我的页面加载时,为什么会出现这个错误: Compiler Error Message: BC30456: 'showNotifier' is not a member of 'ASP.pro_aspx'. showNotifier是一个javascript调用,我必须使用jQuery显示从浏览器屏幕顶部下拉的错误消息。我在母版页中加载了javascript代码,所以我知道它在任何页面上都有 这是我的imagebutton代码: <asp:ImageButto

嘿,我一直在试图弄清楚,当我的页面加载时,为什么会出现这个错误:

 Compiler Error Message: BC30456: 'showNotifier' is not a member of 'ASP.pro_aspx'.
showNotifier是一个javascript调用,我必须使用jQuery显示从浏览器屏幕顶部下拉的错误消息。我在母版页中加载了javascript代码,所以我知道它在任何页面上都有

这是我的imagebutton代码:

 <asp:ImageButton ID="btnDelete" CommandName="Delete" CommandArgument='<%#Eval("id") %>' Text="Delete" runat="server" CssClass="delIcon" AlternateText="Delete" ToolTip="Delete" ImageUrl="~/del.png" />
Javascript代码如下所示:

<script type="text/javascript">
    function msgBoxShow(boxsaying, prodItemName, codeBehind) {
    apprise(boxsaying, {
        'verify': true,
        'textYes': 'Delete ' + prodItemName,
        'textNo': 'Cancel delete'
    },
                function (r) {
                    if (r) {
                        //alert('yes');
                        return true;
                    } else {
                        //alert('no');
                        return false;
                    }
                }
           );
}
</script>

函数msgBoxShow(boxsaying、prodItemName、codeBehind){
通知{
“验证”:true,
'textYes':'Delete'+prodItemName,
“textNo”:“取消删除”
},
功能(r){
if(r){
//警惕(“是”);
返回true;
}否则{
//警告(“否”);
返回false;
}
}
);
}

ImageButton
中,
OnClick
用于引用代码隐藏中的事件处理程序,而不是客户端脚本。您应该改用
OnClientClick

ImageButton
中,
OnClick
用于引用代码隐藏中的事件处理程序,而不是客户端脚本。您应该改为使用
OnClientClick

中的
OnClick
用于识别代码中的函数,该函数将在您单击并将页面发回服务器时运行(这与正常的
相同)

您的意思是
OnClientClick
,它将在客户端上运行javascript


因OP的评论而更新

为了仅在本地javascript函数返回false时返回,请执行以下操作

OnClientClick="if(myFn()==false){return false;}"
这意味着,当函数返回
false
时,它将取消按钮的单击,这意味着表单将不会被发布(这将也将导致任何客户端验证没有运行,如果有)

如果函数返回
true
,则它将继续执行,并向服务器发回帖子

关于在服务器上调用正确的函数,我将专门为image按钮创建一个函数,例如

Protected Sub imgBtn_Click(ByVal sender As Object, ByVal e As EventArgs)
   ...
End Sub

然后,您需要使用
中的
OnClick=“imgBtn\u Click”
OnClick
来识别代码中的函数,该函数将在您单击并将页面发布回服务器时运行(这与普通
相同)

您的意思是
OnClientClick
,它将在客户端上运行javascript


因OP的评论而更新

为了仅在本地javascript函数返回false时返回,请执行以下操作

OnClientClick="if(myFn()==false){return false;}"
这意味着,当函数返回
false
时,它将取消按钮的单击,这意味着表单将不会被发布(这将也将导致任何客户端验证没有运行,如果有)

如果函数返回
true
,则它将继续执行,并向服务器发回帖子

关于在服务器上调用正确的函数,我将专门为image按钮创建一个函数,例如

Protected Sub imgBtn_Click(ByVal sender As Object, ByVal e As EventArgs)
   ...
End Sub

然后你想让元素的OnClick属性(特别是当一个页面上有数百个元素时)实际上是一种老方法。特别是如果您关心较旧的浏览器(和IE6-8),这些浏览器会为每个元素创建“脚本”块(每个单独的),这些元素基本上都调用相同的东西,并且是相同类型的元素。在较旧的浏览器中,这些会大大降低页面速度,我强烈建议不要使用它们

最好只需在所有这些项目上创建一个完整的实时事件处理程序,如下所示:

$(document).on('click', '.delIcon', function () {
    showNotifier(3000,'#cf5050','Delete this?');
});

这将创建一个等待所有这些项目的事件(delIcon类)。我想这也能解决你的问题。ASP.NET假定showNotifier是一种后端方法。

单击元素属性(尤其是在页面上有数百个元素的情况下)实际上是一种老方法。特别是如果您关心较旧的浏览器(和IE6-8),这些浏览器会为每个元素创建“脚本”块(每个单独的),这些元素基本上都调用相同的东西,并且是相同类型的元素。在较旧的浏览器中,这些会大大降低页面速度,我强烈建议不要使用它们

最好只需在所有这些项目上创建一个完整的实时事件处理程序,如下所示:

$(document).on('click', '.delIcon', function () {
    showNotifier(3000,'#cf5050','Delete this?');
});

这将创建一个等待所有这些项目的事件(delIcon类)。我想这也能解决你的问题。ASP.NET假定showNotifier是一个后端方法。

我如何调用javascript,如果是,则调用后面的代码,该代码将受grdView_row命令的保护(ByVal sender作为对象,ByVal e作为System.Web.UI.WebControl.GridViewCommandEventArgs)处理grdView.RowCommand?我已经在代码隐藏中添加了上面的click-even代码。您要么将该方法设置为AJAX方法,要么使用u doPostBack('grdView_RowCommand','Arguments Here'),可以用谷歌搜索关于doPostBack的信息,有很多信息!我该如何调用javascript,如果是,则调用后面的代码,该代码将受grdView_row命令的保护(ByVal sender作为对象,ByVal e作为System.Web.UI.WebControls.GridViewCommandEventArgs)处理grdView.RowCommand?我已经在代码隐藏中添加了上面的click-even代码。您要么将该方法设置为AJAX方法,要么使用u doPostBack('grdView_RowCommand','Arguments Here'),可以用谷歌搜索关于doPostBack的信息,有很多信息!我如何调用javascript,如果是,则调用其背后的代码