0
私はこのような負荷や負荷の質問があることを知っていますが、本当に助けられた人はいません。なぜ?invalid()は常にTRUEを返しますか?
1つのページに2つのフォームがあります(一部のフィールドは共有されています)。一度に1つのフォームしか送信されません。私はいくつかのフィールドが共有されているからだと思っていましたが、私は2番目のフォームをページから完全に削除しましたが、エラーはまだ存在していました。
私はカスタムバリデーターを実装していますが、私が.valid()を呼び出すと、常にTRUEを返します。
現在、私は第1フォームのバリデーターしか持っていません(私は失敗したために移動しませんでした)。
@using (Html.BeginForm("Register", "Account", FormMethod.Post, new { @class = "form-horizontal", role = "form", @id = "driver-form" }))
{
@Html.HiddenFor(m => m.IsGarage, new { @class = "_HdnIsGarage" })
<div class="registration-form" id="driver-registration-form">
@Html.AntiForgeryToken()
<hr />
@Html.ValidationSummary("", new { @class = "text-danger" })
<div>
@Html.Kendo().TextBoxFor(m => m.FirstName).HtmlAttributes(new { placeholder = "First Name" })
</div>
<div>
@Html.Kendo().TextBoxFor(m => m.LastName).HtmlAttributes(new { placeholder = "Last Name" })
</div>
<div>
@Html.Kendo().TextBoxFor(m => m.Email).HtmlAttributes(new { placeholder = "E-mail", @type = "e-mail" })
</div>
<div>
@Html.Kendo().TextBoxFor(m => m.PhoneNum).HtmlAttributes(new { placeholder = "Phone Number" })
</div>
<div>
@Html.Kendo().TextBoxFor(m => m.Password).HtmlAttributes(new { placeholder = "Password", @type = "password" })
</div>
<div>
@*@Html.Kendo().TextBoxFor(m => m.ConfirmPassword).Name("pw").HtmlAttributes(new { placeholder = "Password" }))*@
</div>
<div>
@Html.Kendo().Button().Name("Register").Content("Register").HtmlAttributes(new { type = "button", onclick = "Javascript:driverRegister()" })
</div>
</div>
}
そしてここでjQueryの '登録' をクリックしたときに呼び出されます:ここで
$('#driver-form').validate({
rules:{
FirstName: {
required:true,
minlength: 2,
},
LastName: {
required:true,
minlength: 2,
},
Email: {
required: true,
email: true
},
PhoneNum: {
required: true,
exactlength: 11,
},
Password: {
required: true,
minlength: 6,
symbol: true
}
},messages:{
Firstname: {
required: "Please enter your firstname",
minlength: "Firstname should contain more that 2 characters"
},
LastName: {
required: "Please enter your lastname",
minlength: "Lastname should contain more that 2 characters"
},
}});
フォームで
function driverRegister() {
debugger;
var test1 = $('#driver-form')
var test = $('#driver-registration-form input');
alert(test.valid())
if (test.valid() == true) {
$('#driver-form').submit();
}
}
validate.unobtrusiveも使用していますか?その場合は、 '.validator.unobtrusive.parse($( '#driver-form'))'を実行してから '.valid()'を呼び出してください。 – Stuart
JQueryの検証プラグインを使用していると仮定すると、 '.valid()'関数はフォームを入力フィールドではなく検証します。 - [ここにチェック](https://jqueryvalidation.org/valid/) –
@Stuart、ユーザーとjsが.parseに関する不満を持っています NikhilNanjappa、私は別のフォームで入力を検証していて、それは完全に動作します –