使用onClientClick和onClick以及表单提交

时间:2013-11-04 20:19:14

标签: c# .net onclick onclientclick stripe.net

所以我遇到了一些麻烦。即使在尝试了许多不同的解决方案后,我的问题仍然存在。

按钮单击将触发java脚本代码,但不会激活服务器端代码。

<asp:Button ID="btnSubmit" runat="server" CssClass="ins_sub_btn_form_map" OnClientClick="javascript: stripeSubmit(); return true;" onClick="btnSubmit_Click" 
                                        UseSubmitBehavior="false" ValidationGroup="Submit" Text="Submit" />

这是我的javascript:

function stripeResponseHandler(status, response) {
            if (response.error) {
                // show the errors on the form
                $(".payment-errors").html(response.error.message);
            } else {
                var form$ = $("#form1");
                // token contains id, last4, and card type
                var token = response['id'];
                // insert the token into the form so it gets submitted to the server
                form$.append("<input type='visible' id='stripeToken' name='stripeToken' value='" + token + "' />");
                // and submit
                form$.get(0).submit();                    
            }
        }

        function stripeSubmit() {
            Stripe.setPublishableKey($("input#txtStripePK").val());
            var expDate = $("input#txtExpirationDate").val();
            if (Stripe.card.validateCardNumber($("input#txtCreditCardNumber").val()) == false)
            {
                alert("Credit Card Number Error");
                return;
            }
            if (Stripe.card.validateCVC($("input#txtCVVNumber").val()) == false) {
                alert("CVN Number Error");
                return;
            }
            if (Stripe.card.validateExpiry((expDate.slice(0, 2)) , ("20" + expDate.slice(2, 4))) == false) {
                alert("Expiration Date Error");
                return;
            }
                // createToken returns immediately - the supplied callback submits the form if there are no errors
                Stripe.card.createToken({
                    number: $("input#txtCreditCardNumber").val(),
                    cvc: $("input#txtCVVNumber").val(),
                    exp_month: (expDate.slice(0, 2)),
                    exp_year: ("20" + expDate.slice(2, 4))
                }, stripeResponseHandler);
                //return true; // submit from callback
            }

我已经在javascript中尝试了它而没有返回true,在javascript中使用它。也尝试了它没有在onClientClick返回true,也没有“javascript:”。字面上我能想到的一切。

感谢任何帮助。提前谢谢。

2 个答案:

答案 0 :(得分:0)

如果我没弄错,默认情况下,asp控件的UseSubmitBehavior属性设置为true。这意味着对该控件执行的任何事件都将导致回发。您将UseSubmitBehavior设置为false,因此不会执行后面的代码,因为不会发生回发。当一起使用OnClientClick()和OnClick()时,客户端代码将首先执行,然后执行服务器端代码。希望这有帮助

答案 1 :(得分:0)

对Onclick中的方法使用closing()。 ex onClick =&#34; SomeMethod()&#34;