[英]enable or disable e.preventDefault of javascript for ASP:NET webform button
我正在研究ASP.NET 3.5 Webform應用程序。 我在網絡表單中有提交按鈕
<cc1:FlatButton ID="btnSubmit" runat="server" class="positive" Text="Submit Assessment" OnClick="btnSubmit_Click" RemoveDiv="True" />
后者在代碼后調用OnClick =“ btnSubmit_Click。
protected void btnSubmit_Click(object sender, EventArgs e)
{
....
現在,我還有其他要求,請提供消息框,即警報,當用戶單擊上方的“提交”按鈕時出現,並根據用戶選項的選擇來決定是否提交表單
我的問題是,當用戶選擇否時,如何防止基於用戶選擇ieepreventDefault()的btnSubmit_Click事件背后的代碼調用,否則繼續調用btnSubmit_Click
現在下面的代碼不會停止調用服務器代碼,因為我在流程流的后期調用e.preventDefault()。
對於暫停服務器調用,有什么辦法可以實現嗎???
$(document).ready(function () {
createDialogElements();
$("#ctl00_ContentArea_btnSubmit").click(function (e) {
$("#WindowMessageDialog").jqxWindow('open');
$("#messageDialog_btn_no").click(function () {
alert("answer is no");
e.preventDefault();
});
$("#messageDialog_btn_yes").click(function () {
alert("answer is yes");
});
});
您可以將OnClientClick
屬性用於asp.net中的服務器控件。
問題是,當您單擊提交按鈕時,將觸發OnClientClick
定義的函數,其結果必須為true或false,才能繼續或取消提交。 在您的示例中,您正在打開一個對話框並等待用戶單擊,但是javascript不會停止等待用戶的操作。
如果這是使用javascript進行的簡單驗證(例如必填字段),則任何期望值都將非常簡單。
有一些解決方案。 我能想到的最簡單(但並非更好)是創建一個變量來控制是否可以提交表單。 當您單擊提交時,它將調用一個javascript函數,該對話框將打開您的對話框,並返回false,因此將不提交該表單。
對話框關閉時,如果表單有效,它將提交表單。
嘗試此操作,以在單擊時設置客戶端功能:
<cc1:FlatButton ID="btnSubmit" runat="server" class="positive" Text="Submit Assessment" OnClick="btnSubmit_Click" OnClientClick="if (validForSubmit) return true; else return validateForm();" RemoveDiv="True" />
並使用以下Javascript函數替換您的jQuery代碼:
var validForSubmit = false;
function validateForm() {
$("#WindowMessageDialog").jqxWindow('open');
$("#messageDialog_btn_no").click(function () {
alert("answer is no");
return false;
});
$("#messageDialog_btn_yes").click(function () {
alert("answer is yes");
// set form as valid for submit
validForSubmit = true;
// fire the click, because the form is now valid
$("#ctl00_ContentArea_btnSubmit").click();
return true;
});
return false;
}
您可能需要修復某些問題,但這是個主意,希望對您有所幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.