I am having some troubles with validation using jquery to post a forms data to a controller.
This code works and validation happens fine if I dont use jquery to make the post.
<div id="window">
@using (Html.RequiredFieldsMessage()){}
@using (Html.BeginForm("","",FormMethod.Post,new{id="card-payment"}))
{
@Html.ValidationSummary(true, "Please fix the errors below.")
<div class="inputForm no-border">
<div class="fr">
@Html.LabelFor(model => model.DpsPaymentModel.CardHolderName)
@Html.EditorFor(model => model.DpsPaymentModel.CardHolderName)
@Html.ValidationStyledMessageFor(model => model.DpsPaymentModel.CardHolderName, false)
</div>
<div class="fr">
@Html.LabelFor(model => model.DpsPaymentModel.CardNumber)
@Html.EditorFor(model => model.DpsPaymentModel.CardNumber)
@Html.ValidationStyledMessageFor(model => model.DpsPaymentModel.CardNumber, false)
</div>
<div class="fr">
@Html.LabelFor(model => model.DpsPaymentModel.DateExpiry)
@Html.EditorFor(model => model.DpsPaymentModel.DateExpiry)
@Html.ValidationStyledMessageFor(model => model.DpsPaymentModel.DateExpiry, false)
</div>
<div class="fr">
@Html.LabelFor(model => model.DpsPaymentModel.Cvc2)
@Html.EditorFor(model => model.DpsPaymentModel.Cvc2)
@Html.ValidationStyledMessageFor(model => model.DpsPaymentModel.Cvc2, false)
</div>
<div class="fr">
@Html.LabelFor(model => model.DpsPaymentModel.Amount)
@Html.EditorFor(model => model.DpsPaymentModel.Amount)
@Html.ValidationStyledMessageFor(model => model.DpsPaymentModel.Amount, false)
</div>
<div class="fr">
<button type="submit" id="process-payment">Submit</button>
</div>
</div>
}
</div>
If I add this to my view. The validation is always returned as true. My html is not in a partial view its in the same view that loads the correct jquery validation scripts.
$("#process-payment").click(function () {
event.preventDefault();
var form = $("#card-payment");
$.validator.unobtrusive.parse(form);
if (form.validate()) {
console.log("valid");
$.ajax({
url: '/payment/processcardpayment',
type: "POST",
data: form.serialize(),
success: function (data) {
console.log(data);
},
error: function (jqXhr, textStatus, errorThrown) {
alert("Error '" + jqXhr.status + "' (textStatus: '" + textStatus + "', errorThrown: '" + errorThrown + "')");
},
complete: function () {
// $("#ProgressDialog").dialog("close");
}
});
} else {
console.log("invalid");
}
});