Можно ли принудительно отправить форму с недопустимым текстовым полем? или я могу заставить недействительное поле быть действительным, чтобы я мог отправить форму?
У меня есть форма с 2 кнопками отправки. Тот, который отключен и будет включен для отправки, если сделан удаленный вызов и введено правильное значение (4-значный код доступа). Вторая кнопка должна отправить форму, минуя поле пароля. Я даю пользователю возможность отказаться от ввода значения кода доступа, поэтому я хочу иметь возможность отправить форму, даже если поле кода доступа недопустимо, но я не могу понять, как это сделать! Я пытался в javascript / Jquery сбросить проверку и сбросить форму, но ничего не работает. Я могу сделать Ajax-вызов, когда кнопка нажата, но я бы предпочел использовать формы после вызова.
Могу ли я принудительно отправить форму с недопустимыми полями или установить правильную форму? У меня есть атрибуты данных html для поля и атрибуты данных в модели представления в C #. Я думаю, что все должно быть отключено или обойдено, чтобы представить!
Я прочитал, что атрибуты HTML могут быть сброшены или удалены с помощью вызовов проверки JQuery, которые я пытаюсь описать ниже в моем примере кода JS, но как насчет атрибутов модели представления в c #?
Вот Net Fiddle , над которым я работал, чтобы показать. Приведенный ниже код является просто копией и вставкой из скрипки, а javascript является лишь примером того, что я пытался сбросить / очистить недопустимое поле
$("#finish").off('click').on('click', function() {
$("#Finish").val(true);
$("#RatingValueHidden").val($("#hostRating").val());
//$("#rateForm").validate().resetForm();
//$("#PointCode").val("0000");
//$("#PointCode").rules("add", {
// required: false,
// minlength: 0,
// maxlength: 0
//});
//var validator = $("#rateForm").validate();
//$("#rateForm").data("validator").resetForm()
//var isValid = $("#rateForm").valid();
//validator.resetForm();
//$("#rateForm").submit();
});
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Bootstrap 101 Template</title>
<!-- CSS Includes -->
<link rel="stylesheet" href="//netdna.bootstrapcdn.com/bootstrap/3.1.1/css/bootstrap.min.css">
<style type="text/css">
.field-validation-error {
color: #ff0000;
}
</style>
</head>
<body>
<div class="container">
<div class="col-md-6 col-md-offset-3">
<h1>Enter 4 digit code</h1>
@using (Html.BeginForm()) {
<div class="form-group">
@Html.TextBoxFor(model => model.PointCode, new { @class = "form-control input-lg", @placeholder = "4 Digit Code", @maxlength = "4", @type = "number", @min = "1000", @max = "9999", @title = "Your point code is a 4 digit number" }) @Html.ValidationMessageFor(model
=> model.PointCode)
</div>
<div class="form-group">
<div style="margin: auto; margin-bottom: 20px;">
<button id="finish" class="btn-yb btn btn-default btn-lg btn-block" type="submit">No Thanks, I'm done</button>
</div>
<div style="margin: auto;">
<button id="rateReview" class="btn-yb btn btn-default btn-lg btn-block" type="submit" disabled>Rate and Review</button>
</div>
</div>
}
<br/><br/>
<div class="alert alert-warning fade">
<img src="http://entechprod.blob.core.windows.net/dotnetfiddle/morpheus.jpg" style="max-width:100%;" /><br/><br/>
<strong><span class="alert-content"></span></strong>
</div>
</div>
</div>
</body>
</html>
В моей модели просмотра у меня есть это поле для удаленного вызова
[MinLength(4, ErrorMessage = "Your point code is a 4 digit number")]
[MaxLength(4)]
[Remote("IsPointCodeCorrect", "Rate", HttpMethod = "Get", ErrorMessage = "The point code entered is incorrect", AdditionalFields = "EventId")]
public int? PointCode { get; set; }
и текстовое поле у меня выглядит следующим образом
<div id="inputGroupPointCode" class="input-group textbox-style" style="width: 100%;">
@Html.TextBoxFor(m => m.PointCode, new { @class = "form-control input-lg", @placeholder = "4 Digit Code", @maxlength = "4", @type = "number", @min = "1000", @max = "9999", @title = "Your point code is a 4 digit number" })
</div>