Ale to nie strzela, gdy trafię na przesłanie. Podnosi, ale nic nie robi. Jakieś pomysły? Alert nawet nie nazywa się :(

Strona robię to, czy moja strona kasy w dniu:

http://rsatestamls.kaliocommerce.com.

(Potrzebujesz produktu w koszyku, aby przejść do kasy)

Mój kod JavaScript to:

<script>

$(document).ready(function () {
    $("#Method input:checkbox").change(function () {
        if (this.checked) {
            var checkname = $(this).attr("name");
            $('input[type=checkbox][id=OnAccount]').prop('value', 'True')
            $("input:checkbox[name='" + checkname + "']").not(this).removeAttr("checked");
        } else {
            $('input[type=checkbox][id=OnAccount]').val('No');
        }
    });
    $("#CheckoutOptions input:checkbox").change(function () {
        if (this.checked) {
            var checkname = $(this).attr("name");
            $("input:checkbox[name='" + checkname + "']").not(this).removeAttr("checked");
        }
    });
});

$("#CheckOut").submit(function (event) {
    alert("Handler for .submit() called.");
    jQuery.validator.setDefaults({
        debug: false,
        success: "valid"
    });
    $("#CheckOut").validate({
        rules: {
            FirstName: {
                required: true
            },
            LastName: {
                required: true
            },
            Email: {
                required: true,
                email: true
            },
            Phone: {
                required: true,
                digits: true
            },
            Address1: {
                required: true
            },
            City: {
                required: true
            },
            PostalCode: {
                required: true,
                digits: true
            },
            Country: {
                required: true
            },
            State: {
                required: true
            },
            pwd: {
                required: true
            },
            pwd_confirm: {
                required: true
            },
            FName_SHIP: {
                required: true
            },
            LName_Ship: {
                required: true
            },
            Phone_Ship: {
                required: true,
                digits: true
            },
            Address1_Ship: {
                required: true
            },
            City_Ship: {
                required: true
            },
            PostalCode_SHIP: {
                required: true,
                digits: true
            },
            COUNTRY_SHIP: {
                required: true
            },
            State_SHIP: {
                required: true
            },
            NameOnCard: {
                required: {
                    depends: function (element) {
                        return $("#CCMethod").is(":checked");
                    }
                }
            },
            CreditCardType: {
                required: {
                    depends: function (element) {
                        return $("#CCMethod").is(":checked");
                    }
                }
            },
            CardNumber: {
                required: {
                    depends: function (element) {
                        return $("#CCMethod").is(":checked");
                    }
                }
            },
            CardExpMonth: {
                required: {
                    depends: function (element) {
                        return $("#CCMethod").is(":checked");
                    }
                }
            },
            CardExpYear: {
                required: {
                    depends: function (element) {
                        return $("#CCMethod").is(":checked");
                    }
                }
            },
            CVC: {
                required: {
                    depends: function (element) {
                        return $("#CCMethod").is(":checked");
                    }
                }
            },
            customernumber: {
                required: {
                    depends: function (element) {
                        return $("#OnAccount").is(":checked");
                    }
                }
            }
        }
    });
});
populateCartTotal();

</script>   
0
aregowe 21 listopad 2013, 19:45

2 odpowiedzi

Najlepsza odpowiedź

TWÓJ submit Handler nie jest w bloku $(document).ready, ale powinno być. Handler nigdy nie jest dołączony.

W rzeczywistości nie należy w ogóle używać A submit, tutaj. Wystarczy umieść walidate Call w bloku ready. Zobacz Demo tutaj: http://jquery.bassistance.de/validate/demo/

<script>

$(document).ready(function () {
    $("#Method input:checkbox").change(function () {
        if (this.checked) {
            var checkname = $(this).attr("name");
            $('input[type=checkbox][id=OnAccount]').prop('value', 'True')
            $("input:checkbox[name='" + checkname + "']").not(this).removeAttr("checked");
        } else {
            $('input[type=checkbox][id=OnAccount]').val('No');
        }
    });
    $("#CheckoutOptions input:checkbox").change(function () {
        if (this.checked) {
            var checkname = $(this).attr("name");
            $("input:checkbox[name='" + checkname + "']").not(this).removeAttr("checked");
        }
    });

    // move this stuff to here
    jQuery.validator.setDefaults({
        debug: false,
        success: "valid"
    });
    $("#CheckOut").validate({
        rules: {
            // all those rules here
        }
    });
});

PopulateCartTotal ();

4
elixenide 21 listopad 2013, 16:06

Jako addendum do odpowiedzi ED zalecałbym utworzenie schematu walidacji poza ładowarki Prześlij ().

1
Chaim Leichman 21 listopad 2013, 15:52