簡體   English   中英

在onclientclick之后停止onclick

[英]Stop onclick after onclientclick

我已經看到了一些有關如何執行此操作的示例,但它們似乎對我沒有用。 話雖如此,我做的事情與我所看到的例子有些不同,所以我不確定我想做的事情是否可行。

我有一個多行asp texbox和onclientclick,我想確保(在其他情況下)用戶在提交onclick事件之前沒有超過最大長度。 但是,此文本框是用戶控件的一部分,在頁面上將被使用X次,因此我不能只是從Javascript中獲取控件。 我必須從后面的代碼發送clientID。 因此,我在后面的代碼上添加了OnClientClick事件,並在那里傳遞了該控件的clientID。 我不知道這就是為什么我要得到結果。

SaveNoteButton.OnClientClick = string.Format("return BeforeSave('{0}');", NoteTextBox.ClientID);

<asp:Button runat="server" CssClass="casenotes-bluebuttons" ID="SaveNoteButton" Text="Save" OnClick="SaveNoteButton_Click" Enabled="false" />

    function BeforeSave(noteCtrl) {
        var txt = document.getElementById(noteCtrl);

        if (txt.value.length > 500) {
            alert("false");
            return false;
        }
        else {
            alert("true");
            return true;
        }
    }

因此,從理論上講,OnClientClick屬性將添加到SaveNoteButton按鈕。 當它被觸發時,它傳遞NoteTextBox.ClientID,js檢查文本框長度,返回true或false,然后根據返回值觸發OnClick事件。 但事實並非如此。 我什至嘗試將方法調用包裝在警報中,並且該方法實際上返回了我期望的值,但是無論該方法的返回值如何,均不會觸發OnClick事件。 我什至嘗試刪除方法調用並將其硬編碼為true,但仍然不會觸發。 因此,我知道返回值是真實的,但沒有OnClick喜歡。

奇怪的是,這是調用js方法的語法。

SaveNoteButton.OnClientClick = string.Format("return BeforeSave('{0}');", NoteTextBox.ClientID);

變成

SaveNoteButton.OnClientClick = string.Format("BeforeSave('{0}')", NoteTextBox.ClientID);

而且效果很好。

刪除Enabled="false"位。 這就是為什么onclick事件不會觸發的原因。

好了,這是我為解決問題所做的:

SaveNoteButton.OnClientClick = string.Format("if(!BeforeSave('{0}', '{1}')) return false;", NoteTextBox.ClientID, this._maxLength);

暫無
暫無

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

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