13

我只想在 Web 用户控件中添加一些客户端(JQuery Javascript)验证。我放置了一个 OnClientClick 处理程序并调用了该函数。但是,即使我返回“false”,OnClick 方法总是会被触发。我究竟做错了什么 ?

我使用的是 VS 2010,目标是 4.0 框架和 JQuery 1.4.2。和 JQuery UI 1.8.4。

这是一个示例代码:

<td style="text-align:right"><asp:Button ID="btnAddSave" OnClientClick="return ValidateMail();" OnClick="btnAddSave_Click" runat="server" Text="Submit" /></td>

脚本方法:

function ValidateMail() {
alert("Bouton clicked");
return false;

}

如果我在 Page_Load 事件中放置一个断点,我会看到我进入并且 btnAddSave_Click 事件也被执行。

4

7 回答 7

12

出于某种原因,虽然我没有附加任何 jquery 事件处理程序,但它不起作用。

实际起作用的是:

OnClientClick="if (validate_form() == false) return(false);"
于 2012-09-05T08:54:00.200 回答
8

您是否有返回的单击事件处理程序(通过 jquery 注册)trueOnClientClick在这种情况下,将忽略的返回值。

看看我的问题(和答案):为什么不从 OnClientClick 返回 false 取消回发

于 2011-07-25T06:23:19.543 回答
4

尝试将其更改为

OnClientClick="ValidateMail(); return false;" 
于 2011-06-17T18:15:40.063 回答
3

很好的答案。我这样做。相同的结果 - 如果从 Java 函数返回 false,则不会触发 OnClick 事件。

OnClientClick = "if (!ValidateDelete()) return false;"
OnClick="btnDeleteSupplier_Click"
于 2013-04-11T14:54:50.933 回答
1

奇怪的是,这对我有用:

OnClientClick="javascript:SubmitTableData(); return CanSubmit();"

使用第一个函数调用设置返回值提交:

function CanSubmit() {    
    return submit;
}

希望这可以帮助某人。

于 2020-04-17T22:12:14.067 回答
0

我写这个答案只是因为我在 ASP.NET WebForms 中使用 html 按钮,但我找不到解决方案,为什么要用工作示例替换我的代码。这是为什么它不起作用的解决方案。希望它能帮助你理解这个问题,就像检查它对我有帮助一样。这是我的第一篇文章,对于风格非常抱歉。

<button type="button" id="buttonAddOrEdit" class="btn btn-success"  runat="server" onclick="return myValidate()"    onserverclick="buttonAddOrEdit_ServerClick">Zapisz</button>

和javascript函数:

function myValidation() {
        if (validator.form()) {
           //Project logic
            return true;
        }
        else return false;
    };

正确验证后使用客户端单击不会在绑定到按钮的服务器端触发事件。提到的解决方案将一段代码更改为:

onclick="if(!myValidation()) 返回;"

由于创建了使用 onserverclick 在页面上呈现的 html 的方式而工作。html 按钮上的 Onserverclick 正在被 javascript 中的 __doPostBack 方法替换。在客户端呈现的 html 按钮的完整代码如下所示:

<button onclick="return myValidation(); __doPostBack('ctl00$PortalContent$buttonAddOrEdit','')" id="ctl00_PortalContent_buttonAddOrEdit" type="button" class="btn btn-success">Zapisz</button>  Błąd składni

在用 if 语句替换它之后。

<button onclick="if(!myValidation()) return; __doPostBack('ctl00$PortalContent$buttonAddOrEdit','')" id="ctl00_PortalContent_buttonAddOrEdit" type="button" class="btn btn-success">Zapisz</button>

使用 return myValidate(); 不会触发事件,因为它在 __doPostBack 之前返回。

以下代码将允许您在必要时向按钮添加一些其他代码,并且不会导致任何问题。

于 2017-04-05T12:52:06.533 回答
0

只需添加javascript:

例子:

javascript:return ValidateMail();
于 2017-04-06T15:47:16.590 回答