Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/88.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 从客户端处理程序返回false不会阻止回发_Javascript_Jquery_Asp.net_Webforms - Fatal编程技术网

Javascript 从客户端处理程序返回false不会阻止回发

Javascript 从客户端处理程序返回false不会阻止回发,javascript,jquery,asp.net,webforms,Javascript,Jquery,Asp.net,Webforms,我在WebForms页面上有以下按钮: <asp:Button ID="btnNewProgramNext" runat="server" Text="Next &gt;&gt;" /> 我有下面的javascript/jquery来处理它的事件 $('#<%= btnNewProgramNext.ClientID %>').on('click', function (e) { var errorMessage = ''; var o

我在WebForms页面上有以下按钮:

<asp:Button ID="btnNewProgramNext" runat="server" Text="Next &gt;&gt;" />

我有下面的javascript/jquery来处理它的事件

$('#<%= btnNewProgramNext.ClientID %>').on('click', function (e) {
    var errorMessage = '';
    var ok = false;
    var newCompany = $('#<%= NewCompanyMode.ClientID %>').val();
    if (newCompany == 1) {
        if (!$('#<%= txtProgramCompanyName.ClientID %>').val())
            errorMessage = 'You must enter a company name.';
        else if (!$('#<%= txtContactFirstName.ClientID %>').val())
            errorMessage = 'You must enter a contact first name.';
        else if (!$('#<%= txtContactLastName.ClientID %>').val())
            errorMessage = 'You must enter a contact last name.';
        else
            ok = true;
    }
    else {
        // Do something else
        ok = true;
    }
    $('#newProgramErrorMessage').text(errorMessage);
    return ok;
});
$('#')。在('click',函数(e){
var errorMessage='';
var-ok=false;
var newCompany=$('#').val();
如果(新公司==1){
if(!$('#').val())
errorMessage='您必须输入公司名称';
else if(!$('#').val())
errorMessage='您必须输入联系人的名字';
else if(!$('#').val())
errorMessage='您必须输入联系人的姓氏';
其他的
ok=正确;
}
否则{
//做点别的
ok=正确;
}
$('newProgramErrorMessage')。文本(errorMessage);
返回ok;
});
问题是,当此处理程序返回false时(当
ok
为false时,或者当我将最后一行更改为
return false
时),回发仍然发生


有什么技巧可以阻止javascript的回发吗?我希望这能起作用。

为什么不尝试通过
ClientClick
属性将其连接起来,而不是使用jQuery订阅click事件呢。这可能是ASP.NET用于确定是否终止回发的路由。

您需要e.preventDefault()来取消按钮单击事件

$('#<%= btnNewProgramNext.ClientID %>').on('click', function (e) {
    var errorMessage = '';
    var ok = false;
    var newCompany = $('#<%= NewCompanyMode.ClientID %>').val();
    if (newCompany == 1) {
        if ($('#<%= txtProgramCompanyName.ClientID %>').val() == "")
            errorMessage = 'You must enter a company name.';
        else if ($('#<%= txtContactFirstName.ClientID %>').val() == "")
            errorMessage = 'You must enter a contact first name.';
        else if ($('#<%= txtContactLastName.ClientID %>').val() == "")
            errorMessage = 'You must enter a contact last name.';
        else
            ok = true;
    } else {
        // Do something else
        ok = true;
    }
    if (!ok) {
        e.preventDefault();
        $('#newProgramErrorMessage').text(errorMessage);
    }
    // else everything is valid, so post back to server.
});
$('#')。在('click',函数(e){
var errorMessage='';
var-ok=false;
var newCompany=$('#').val();
如果(新公司==1){
如果($('#').val()=“”)
errorMessage='您必须输入公司名称';
else if($('#').val()=“”)
errorMessage='您必须输入联系人的名字';
else if($('#').val()=“”)
errorMessage='您必须输入联系人的姓氏';
其他的
ok=正确;
}否则{
//做点别的
ok=正确;
}
如果(!ok){
e、 预防默认值();
$('newProgramErrorMessage')。文本(errorMessage);
}
//否则一切都是有效的,所以发回服务器。
});

使用
OnClientClick
实际上是可行的。还在研究为什么我不能在这里使用jQuery。我认为这是显而易见的。我打赌默认情况下,除非标记中声明了
OnClientClick
,否则它将返回
true
。ASP.NETWebForms是在jQuery之前创建的,不知道如何查找其他路径。只需将JavaScript声明为一个离散函数,并从
OnClientClick
调用它。我不清楚的是,返回false在常规HTML中如何工作?它会阻止对操作的进一步处理。它不依赖于WebForms。那么为什么这里需要WebForms呢?关于这一点,确实有很多令人困惑的信息。根据对的主要回答,“从jQuery事件处理程序中返回false实际上与对传递的jQuery.event对象调用e.preventDefault和e.stopPropagation相同。”您所述的信息对于常规html控件是正确的。在OP中,您使用的是ASP.Net服务器控件,它有自己的javascript回发到服务器。理想情况下,如果您使用ASP.Net服务器控件(Garrison Neely回答),您希望使用ClientClick。这是你的电话号码