2010-09-16 104 views
2

我有一個常規的asp:按鈕。我正在.net 3.5中工作。我已經嘗試使用OnClientClick屬性向按鈕添加js確認以及添加代碼隱藏,結果是相同的。無論用戶點擊確認彈出式窗體都不會提交?javascript確認asp.net按鈕從不提交?

BtnDeleteSelected.Attributes.Add(「onclick」,「return confirm('確定要刪除嗎?');」);

確認對話框出現,如果我選擇「確定」它仍然不提交..任何想法?謝謝。

回答

5

那是因爲你不應該在所有情況下返回。如果您查看網頁的源代碼,並查找按鈕標記,你可能會看到這個...

onclick="return confirm('Ok?'); __doPostback();" 

的__doPostBack調用由在某些情況下,ASP.NET框架自動插入。既然您立即返回,無論confirm的結果如何,回發都不會觸發。最終的解決方案是不設置onclick屬性,而是使用unobtrusive approach。但是,如果有緊迫的理由來控制這種對通過的onclick服務器端,您可以使用一個簡單if聲明,只有當他們按「取消」返回......

string js = "if(!confirm('Are you sure you want to delete?')) return false;"; 
BtnDeleteSelected.Attributes.Add("onclick", js); 
+0

非常感謝!非常有意義。唯一迫切的需要可能是混雜着懶惰的壞習慣..我應該克服的事情我知道!再次感謝。 – rodrick 2010-09-16 20:47:54

0

如果驗證通過,您是否必須返回TRUE?意思是,如果confirm()返回false,我認爲表單不會提交。

+0

從我的理解上面是所有需要的..點擊確定返回true – rodrick 2010-09-16 20:35:07

0

您的代碼在表面上看起來不錯。你有沒有可能阻止它被提交的驗證器?嘗試添加BtnDeleteSelected.CausesValidation = false以防止刪除按鈕調用任何客戶端驗證器。

+0

我已經添加BtnDeleteSelected.CausesValidation =錯誤思考相同的事情..沒有骰子..沒有其他驗證頁面上。 – rodrick 2010-09-16 20:35:48

+0

雖然我在那裏使用radgrid確認..可能是這個問題..但沒有js錯誤。 – rodrick 2010-09-16 20:36:29

0

請嘗試調用doPostBack功能;)

我的意思是:

BtnDeleteSelected.Attributes.Add("onclick", "CheckConfirm();"); 

<script language="javascript"> 
function CheckConfirm() 
{ 
    if (confirm('Are you sure you want to delete?')) 
     __doPostBack('BtnDeleteSelected',''); 
    else 
     return false; 

    return true; 
} 
</script> 

希望幫助,

2

我有這個問題了。我用添加客戶端的JavaScript在這樣的OnItemCreated代碼一個DataGrid的:

myTableCell = e.Item.Cells(iDeleteColumnNumber) 'Delete Button Column 
myDeleteButton = myTableCell.Controls(1) 

If myDeleteButton.UniqueID = "lbtnDelete" Then 
    myDeleteButton.Attributes.Add("onclick", "if(!confirm('OK to Delete?'))return false;") 
End If 

出於某種原因,沒有工作。然後我搬到了JavaScript來的<asp:linkbutton>在這樣的設計視圖:

<asp:LinkButton id="lbtnDelete" runat="server" CssClass="link-text" Text="<img border=0 src=../images/icons/icon-delete.gif alt=Delete>" 
CommandName="Delete" CausesValidation="false" OnClientClick="if(!confirm('OK to Delete?'))return false;"></asp:LinkButton> 

這爲我工作。