我试图验证MVC中的信用卡号码,但是无论信用卡输入是否有效,甚至是空的,它都会让用户提交表单。
这是我尝试过的,谁能告诉我哪里出错了?这是我的观点的基础。
视图中的,显然有额外的语法,格式化:
@using (Html.BeginForm("CheckoutCart", "Cart", FormMethod.Post, new {@id ="checkoutform"}))
@Html.Label("Credit Card Number:")
@Html.EditorFor(model => model.ModelTransaction.CreditCard, new { @id = "creditcard" })
@section scripts
{
<script src="~/Scripts/jquery.validate.js" type="text/javascript"></script>
<script src="//code.jquery.com/ui/1.11.1/jquery-ui.js"></script>
<script type="text/javascript">
$(document).ready(function () {
$("#checkoutform").submit(function () {
jQuery.validator.setDefaults({
debug: true,
success: "valid"
});
$("#checkoutform").validate({
rules: {
creditcard: {
required: true,
creditcard: true
}
}
});
if ($("#checkoutform").valid()) {
return true;
}
return false;
});
});
</script>
}
答案 0 :(得分:0)
结果是jQuery验证要求你输入name属性,而不是id属性。
所以验证部分应该是:
$("#checkoutform").validate({
rules: {
ModelTransaction.CreditCard: {
required: true,
creditcard: true
}
}
});
这是有问题的,因为'。'
所以我的解决方案是使用:
$("#checkoutform").validate({
});
$("#ModelTransaction_CreditCard").rules("add", { required: true, creditcard: true });
$("#ModelTransaction_PostCode").rules("add", { required: true });
$("#ModelTransaction_Address1").rules("add", { required: true });