簡體   English   中英

ASP.NET OnClientClick="return false;" 不起作用

[英]ASP.NET OnClientClick="return false;" doesn't work

我只想在 web 用戶控件中添加一些客戶端(JQuery Javascript)驗證。 我放置了一個 OnClientClick 處理程序,然后調用了 function。 但是,即使我返回“false”,OnClick 方法也總是會被觸發。 我究竟做錯了什么?

我使用 VS 2010,目標是 JQuery 1.4.2 的 4.0 框架。 和 JQuery 用戶界面 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 事件也被執行。

出於某種原因,雖然我沒有附加任何 jquery 事件處理程序,但它不起作用。

實際有效的是:

OnClientClick="if (validate_form() == false) return(false);"

您是否有返回true的點擊事件處理程序(通過 jquery 注冊)? 在這種情況下,將忽略OnClientClick的返回值。

看看我的問題(和答案): 為什么不從 OnClientClick 返回 false 取消回發

很棒的答案。 我這樣做。 相同的結果 - 如果從 Java 函數返回 false,則不會觸發 OnClick 事件。

OnClientClick = "if (!ValidateDelete()) return false;"
OnClick="btnDeleteSupplier_Click"

嘗試將其更改為

OnClientClick="ValidateMail(); return false;" 

奇怪的是,這對我有用:

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

使用第一個函數調用設置返回值提交:

function CanSubmit() {    
    return submit;
}

希望這可以幫助某人。

我寫這個答案只是因為我在 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。 Onserverclick on html 按鈕正在被 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 之前返回。

以下代碼將允許您在必要時向按鈕添加一些其他代碼,並且不會導致任何問題。

只需添加javascript:

示例:

javascript:return ValidateMail();

嘗試使用OnClick屬性設置隱藏按鈕,例如:

<asp:Button ID="Button6" runat="server" onclick="btnAddSave_Click" Text="Button" style="visibility: hidden;" />

從按鈕中刪除OnClick屬性並在OnClientClick屬性中返回 false,例如:

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

單擊隱藏按鈕以觸發OnClick方法,具體取決於腳本方法中的條件:

function ValidateMail() {
 if(true)
 {
    $('#Button6').click();
 }
 else
 {
    //do something
 }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM