我最近找到了this显示澳大利亚商业号码的 jquery 验证器函数的页面。在我的 Cshtml 页面中,我有以下表单元素。
<div class="col-md-4">
<div class="form-group">
<label asp-for="ABN" class="col-md-4 col-lg-4 control-label"></label>
<div class="col-md-8 col-lg-8">
<input asp-for="ABN" class="form-control" />
<span asp-validation-for="ABN" class="text-danger" />
</div>
</div>
</div>
我已将 jquery 代码放入页面并使用 F12 调试器,我注意到它确实逐步执行了它,但是当它的数字返回 false 时,我没有发现任何关于错误的事情。页面只是关闭以更新数据库。
function abnValidate (value, element) {
if (value.length != 11 || isNaN(parseInt(value)))
return false;
var weighting = [10,1,3,5,7,9,11,13,15,17,19];
var tally = (parseInt(value[0]) - 1) * weighting[0];
for (var i = 1; i < value.length; i++) {
tally += (parseInt(value[i]) * weighting[i]);
}
return (tally % 89) == 0;
}
jQuery.validator.addMethod('abnValidate', abnValidate, 'This ABN is not valid');
我在JSFiddle试过了但我得到的只是错误:
{"error": "Please use POST request"}
我怀疑这是不知道如何正确配置代码的情况。有人可以看看我错过了什么吗?
编辑
这是要求的完整表格。
@model JobsLedger.ViewModels.CompanyDetailsViewModel
<form asp-action="Edit">
<br />
<div class="form-horizontal container">
<div class="row">
<div class="col-lg-12 text-center">
<h2><span class="glyphicon glyphicon-edit"></span> Edit Company Details </h2>
<hr>
</div>
</div>
<div asp-validation-summary="ValidationSummary.ModelOnly" class="text-danger"></div>
<input type="hidden" asp-for="CompanyDetailsId" />
@*ROW ONE*@
<div class="row">
<div class="col-md-4">
<div class="form-group">
<label asp-for="CompanyName" class="col-md-4 col-lg-4 control-label"></label>
<div class="col-md-8 col-lg-8">
<input asp-for="CompanyName" class="form-control" />
<span asp-validation-for="CompanyName" class="text-danger" />
</div>
</div>
</div>
</div>
@*ROW TWO*@
<div class="row">
<div class="col-md-4">
<div class="form-group">
<label asp-for="ContactFirstName" class="col-md-4 col-lg-4 control-label"></label>
<div class="col-md-8 col-lg-8">
<input asp-for="ContactFirstName" class="form-control" />
<span asp-validation-for="ContactFirstName" class="text-danger" />
</div>
</div>
</div>
<div class="col-md-4">
<div class="form-group">
<label asp-for="ContactLastName" class="col-md-4 col-lg-4 control-label"></label>
<div class="col-md-8 col-lg-8">
<input asp-for="ContactLastName" class="form-control" />
<span asp-validation-for="ContactLastName" class="text-danger" />
</div>
</div>
</div>
</div>
@*ROW THREE*@
<div class="row">
<div class="col-md-4">
<div class="form-group">
<label asp-for="ContactEmail" class="col-md-4 col-lg-4 control-label"></label>
<div class="col-md-8 col-lg-8">
<input asp-for="ContactEmail" class="form-control" />
<span asp-validation-for="ContactEmail" class="text-danger" />
</div>
</div>
</div>
</div>
@*ROW FOUR*@
<div class="row">
<div class="col-md-4">
<div class="form-group">
<label asp-for="MobilePhone" class="col-md-4 col-lg-4 control-label"></label>
<div class="col-md-8 col-lg-8">
<input asp-for="MobilePhone" class="form-control" />
<span asp-validation-for="MobilePhone" class="text-danger" />
</div>
</div>
</div>
<div class="col-md-4">
<div class="form-group">
<label asp-for="OfficePhone" class="col-md-4 col-lg-4 control-label"></label>
<div class="col-md-8 col-lg-8">
<input asp-for="OfficePhone" class="form-control" />
<span asp-validation-for="OfficePhone" class="text-danger" />
</div>
</div>
</div>
</div>
@*ROW FIVE*@
<div class="row">
<div class="col-md-4">
<div class="form-group">
<label asp-for="CompanyEmail" class="col-md-4 col-lg-4 control-label"></label>
<div class="col-md-8 col-lg-8">
<input asp-for="CompanyEmail" class="form-control" />
<span asp-validation-for="CompanyEmail" class="text-danger" />
</div>
</div>
</div>
</div>
@*ROW SIX*@
<div class="row">
<div class="col-md-4">
<div class="form-group">
<label asp-for="ABN" class="col-md-4 col-lg-4 control-label"></label>
<div class="col-md-8 col-lg-8">
<input asp-for="ABN" class="form-control" />
<span asp-validation-for="ABN" class="text-danger" />
</div>
</div>
</div>
</div>
<div class="panel panel-default">
<div class="panel-heading">
<h4 class="panel-title"><strong>Company Address Details</strong></h4>
</div>
<div class="panel-body">
@*ROW SEVEN*@
<div class="row">
<div class="col-md-4">
<div class="form-group">
<label asp-for="Street1" class="col-md-4 col-lg-4 control-label"></label>
<div class="col-md-8 col-lg-8">
<input asp-for="Street1" class="form-control" />
<span asp-validation-for="Street1" class="text-danger" />
</div>
</div>
</div>
<div class="col-md-4">
<div class="form-group">
<label asp-for="Street2" class="col-md-4 col-lg-4 control-label"></label>
<div class="col-md-8 col-lg-8">
<input asp-for="Street2" class="form-control" />
<span asp-validation-for="Street2" class="text-danger" />
</div>
</div>
</div>
</div>
@*ROW EIGHT*@
<div class="row">
<div class="col-md-4">
<div class="form-group">
<label asp-for="State" class="col-md-4 col-lg-4 control-label"></label>
<div class="col-md-8 col-lg-8">
<select asp-for="State" asp-items="@Model.StatesList" class="form-control"></select>
<span asp-validation-for="State" class="text-danger" />
</div>
</div>
</div>
<div class="col-md-4">
<div class="form-group">
<label asp-for="Suburb" class="col-md-4 col-lg-4 control-label"></label>
<div class="col-md-8 col-lg-8">
<input asp-for="Suburb" class="form-control">
<span asp-validation-for="Suburb" class="text-danger" />
</div>
</div>
</div>
<div class="col-md-4">
<div class="form-group">
<label asp-for="Postcode" class="col-md-4 col-lg-4 control-label"></label>
<div class="col-md-8 col-lg-8">
<input asp-for="Postcode" class="form-control" readonly="readonly" />
<span asp-validation-for="Postcode" class="text-danger" />
</div>
</div>
</div>
</div>
</div>
</div>
<div class="panel panel-default">
<div class="panel-heading">
<h4 class="panel-title"><strong>Company Bank Details</strong></h4>
</div>
<div class="panel-body">
@*ROW NINE*@
<div class="row">
<div class="col-md-4">
<div class="form-group">
<label asp-for="BankName" class="col-md-4 col-lg-4 control-label"></label>
<div class="col-md-8 col-lg-8">
<input asp-for="BankName" class="form-control" />
<span asp-validation-for="BankName" class="text-danger" />
</div>
</div>
</div>
<div class="col-md-4">
<div class="form-group">
<label asp-for="BankBSB" class="col-md-4 col-lg-4 control-label"></label>
<div class="col-md-8 col-lg-8">
<input asp-for="BankBSB" class="form-control" />
<span asp-validation-for="BankBSB" class="text-danger" />
</div>
</div>
</div>
<div class="col-md-4">
<div class="form-group">
<label asp-for="BankAccount" class="col-md-4 col-lg-4 control-label"></label>
<div class="col-md-8 col-lg-8">
<input asp-for="BankAccount" class="form-control" />
<span asp-validation-for="BankAccount" class="text-danger" />
</div>
</div>
</div>
</div>
</div>
</div>
@*ROW TEN*@
<div class="row">
<div class="col-md-4">
<div class="form-group">
<label class="col-md-4 col-lg-4 control-label">Update Form:</label>
<div class="col-md-8 col-lg-8">
<input type="submit" value="Save" class="btn btn-default" />
</div>
</div>
</div>
</div>
@*Closing DIV for class horizontal*@
</div>
</form>
<div>
<a asp-action="Index">Back to List</a>
</div>
@section Scripts {
<script src="~/lib/jquery-validation/dist/jquery.validate.min.js"></script>
<script src="~/lib/jquery-validation-unobtrusive/jquery.validate.unobtrusive.min.js"></script>
<script type="text/javascript">
//<![CDATA[
$(document).ready(function () {
function abnValidate(value, element) {
if (value.length != 11 || isNaN(parseInt(value)))
return false;
var weighting =
[10, 1, 3, 5, 7, 9, 11, 13, 15, 17, 19];
var tally = (parseInt(value[0]) - 1) * weighting[0];
for (var i = 1; i < value.length; i++) {
tally += (parseInt(value[i]) * weighting[i]);
}
return (tally % 89) == 0;
}
jQuery.validator.addMethod(
'abnValidate',
$("#ABN"), 'This ABN is not valid'
);
});
//]]></script>
}
最佳答案
你必须在某处添加以下内容
<form method="POST">
关于javascript - Jquery 验证器不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36567145/