2015-11-05 182 views
1

因此,我有一個可以創造奇蹟的PayPal表單。但是,我現在需要添加一個優惠券字段,其中有人可以輸入代碼,並根據後端回覆進行減少。阻止提交表單的Asp.NET按鈕

這一切都很好用,但在檢查之前添加選項以知道時遇到了問題,您的代碼是否有效。目前,我的形式(一次簡化的)看起來是這樣的:

<form action="https://www.sandbox.paypal.com/cgi-bin/webscr" method="post" 
    id="payPalForm" runat="server"> 
    <asp:TextBox runat="server" ID="txtCode" /> 
    <asp:Button Text="Validate" OnClick="ValidateDiscount" runat="server" /> 
    <asp:Label ID="txtDesc" runat="server" /> 

    <input type="submit" name="Submit" value="Pay up!" /> 

    <input type="hidden" name="cmd" value="_cart" /> 
    <input type="hidden" name="upload" value="1" /> 
    ... 
</form> 

隨着具有功能後端:

protected void ValidateDiscount(object sender, EventArgs e) 
{ 
    this.txtDesc.Text = "fetch from database using: " + txtCode.Text; 
} 

我的問題是,wheneve我點擊驗證按鈕,提交表單和我最終在Paypal網站上。我先用preventDefault()來使用Jquery,但實際上阻止了我的服務器端函數被觸發。我也嘗試過使用標準<button><input type='button'>標籤,但我無法啓動它來激活我的服務器端功能。

有什麼辦法讓Validate按鈕不提交表單,或者我應該從表單中刪除操作,並在點擊提交按鈕時手動提交表單?

+2

您的表單將發佈到paypal,因爲這是您爲其設置的操作。你有很多選擇。當您發現折扣有效時,您可以嘗試從C#中的ValidateDiscount函數重定向到paypal。 – Shockwave

回答

2

您已將表單操作設置爲發送到PayPal。

這是操作:

action="https://www.sandbox.paypal.com/cgi-bin/webscr" 

在這裏你有這本事形成標籤:

<form action="https://www.sandbox.paypal.com/cgi-bin/webscr" method="post" 
id="payPalForm" runat="server"> 

從表單標籤刪除這一點,它應該回發到你的應用程序。

+0

哦......我其實並不知道表單的動作阻止了回發' - 'TIL –

+0

是的,它可以把你趕出去。 W3C網站有更多信息:http://www.w3schools.com/tags/att_form_action.asp。 –