我有一个带有asp:按钮的asp.net应用程序会导致回发,这意味着输入的html具有自动生成的onclick属性,我需要通过jQuery向onclick属性添加一个事件在自动生成的回发被触发之前触发。
下面是生成的html示例,我需要确保jQuery添加的事件在WebForm_DoPostBackWithOptions()函数之前触发。
<input id="ctl00_MainContent_Save" type="submit" onclick="javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions("ctl00$MainContent$Save", "", true, "", "", false, false))" value="" name="ctl00$MainContent$Save">
为了更清楚,我知道我可以通过jQuery添加一个事件,如下所示:
$('#ctl00_MainContent_Save').click(function() {
somfunction();
});
但我想在WebForm_DoPostBackWithOptions
之前触发我的事件答案 0 :(得分:4)
您可以尝试在触发点击事件之前触发的mousedown事件。
$('#ctl00_MainContent_Save').mousedown(function() {
somfunction();
});
或尝试以下代码
$(document).ready(function(){
$('#ctl00_MainContent_Save')
.attr("onclick", null)
.removeAttr("onclick")
.click(function() {
somfunction();
WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions($(this).attr("name"), "", true, "", "", false, false));
});
});
答案 1 :(得分:2)
希望这会让你知道如何做。
<asp:Button ID="bsrc" runat="server" Text="Search" OnClick="bsrc_Click" />
<script type="text/javascript" language="javascript">
$(document).ready(function()
{
$('#<%= bsrc.ClientID %>').click(function(e)
{
return true;
});
});
</script>
当你先点击按钮时,它会调用javascript函数然后转到服务器端。如果您想停止使用return false;
代替return true;
答案 2 :(得分:0)
怎么样:
<input id="ctl00_MainContent_Save" type="submit" value=""
name="ctl00$MainContent$Save">
...
$('#ctl00_MainContent_Save').click(function(e) {
e.preventDefault();
somfunction();
WebForm_DoPostBackWithOptions(
new WebForm_PostBackOptions("ctl00$MainContent$Save",
"", true, "", "", false, false))"
});
如果您无法更改HTML,可以尝试(警告:未经测试!)
var $link = $('#ctl00_MainContent_Save');
var oldFunction = $link[0].onClick;
$link[0].onClick = null
$link.click(function(e) {
e.preventDefault();
somfunction();
oldFunction();
});