奇妙なシナリオがあります。現在のパスワード、新しいパスワード、および新しいパスワードの確認フィールドを含むフォームがあります。
- 現在のパスワードが必要です。
- ユーザーが変更しない限り、新しいパスワードは必要ありません。変更する場合は、正規表現の要件 (
^(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z])(?=.*[!@#$&*\"]).{6,16}?$
) を満たす必要があります。 - 新しいパスワードを確認する必要はありませんが、新しいパスワードと一致します。
以下は、MVC cshtml フックアップです。
<li>
<label for="Password" class="required">Current Password</label>
@Html.TextBoxFor(m => m.UserInfoData.Password, new
{
@type = "password",
@class = "k-textbox",
@placeholder = "Current Password",
@validationmessage = "Current Password Required!",
@required = "required"
})
</li>
<li>
<label for="NewPassword" class="required">New Password</label>
@Html.TextBoxFor(m => m.UserInfoData.NewPassword, new
{
@type = "password",
@class = "k-textbox",
@placeholder = "New Password",
@required = "required",
@pattern = "^(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z])(?=.*[!@#$&*\"]).{6,16}?$",
})
</li>
<li>
<label for="ConfirmNewPassword" class="required">Confirm New Password</label>
@Html.TextBoxFor(m => m.UserInfoData.ConfirmNewPassword, new
{
@type = "password",
@class = "k-textbox",
@placeholder = "Confirm New Password",
@verifypasswords = string.Empty
})
</li>
<li class="confirm">
<button class="k-button k-primary" type="submit" id="submitSetingsData">Update Details</button>
</li>
以下は、剣道検証を使用した jQuery 接続です。
$("#settings").kendoValidator({
rules: {
verifyPasswords: function (input) {
var result = true;
if (input.is("[name=UserInfoData.ConfirmNewPassword]")) {
result = input.val() === $("#UserInfoData_NewPassword").val();
}
return result;
}
},
messages: {
verifyPasswords: "New passwords do not match!"
}
});
検証は正常に機能していますが、新しいパスワード フィールドをオプションにすることはできません。HTML5 パターンには が必要required
ですが、このフィールドをオプションにしたいです。ユーザーが空白のままにすると検証をチェックしませんが、ユーザーが入力を行う場合は正規表現に準拠する必要があります。私は?
正規表現の最後に使用しましたが、オプションにはしていません。剣道の検証またはhtml5に関する可能な解決策またはヒントは非常に高く評価されます。ありがとうございました。