0

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

单击按钮将触发 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:”。从字面上看,我能想到的一切。

任何帮助表示赞赏。提前致谢。

4

2 回答 2

0

在 Onclick 中的方法上使用 close ()。ex onClick="SomeMethod()"

于 2015-04-03T23:13:17.607 回答
0

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

于 2013-12-10T15:10:13.780 回答