[英]onclick and onclientclick webmethod executed after 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.