ReportValidity отображается только при последнем вводе ⇐ Jquery
-
Anonymous
ReportValidity отображается только при последнем вводе
У меня есть модальное окно boostrap4, и нажатие кнопки «Сохранить» в модальном окне выполнит проверку на сервере. После проверки наличия ошибок верните ошибки и используйте setCustomValidity для каждого ввода/выбора с ошибкой. Наконец, используйте reportValidity, чтобы отобразить все недействительные всплывающие сообщения.
Проблема в том, что всплывающее окно отображается только для последнего ввода/выбора ошибок, а не для всех.
... ... Имя: Контакты: Закрыть Сохранить function saveAlert({data = {}}) { пусть недействительныйInputs = []; setTimeout(() => { $("#modal").modal("показать"); },700); Object.entries(data.UserInfo).forEach((подробно) => { ..заполнить модальное окно данными }); Object.entries(data.Errors).forEach((ошибка) => { переключатель(ошибка[0].toLowerCase()) { случай «имя»: если (ошибка[1] == ложь) { validateInputs .push(document.querySelector("#name")); document.querySelector("#name").setCustomValidity("Пожалуйста, введите свое имя"); } перерыв; корпус «контакты»: если (ошибка[1] == ложь) { validateInputs .push(document.querySelector("#contacts")); document.querySelector("#contacts").setCustomValidity("Пожалуйста, укажите свои контакты."); } перерыв; по умолчанию: перерыв; } }); если (invalidateInputs.length > 0) { // (*) несмотря на то, что весь ввод зациклен, всплывающее окно появилось только при последнем вводе validateInputs.forEach((input) => { input.reportValidity(); // -> (*) }) } вернуть ложь; } с использованием системы; ... Пользователь публичного частичного класса: System.Web.UI.Page { protected void Page_Load (отправитель объекта, EventArgs e) { ...checkuser Session["pagename"] = "Пользователь"; } [System.Web.Services.WebMethod] общедоступная статическая строка GetUser() {} protected void ValidationCheck (отправитель объекта, EventArgs e) { Результат ValidationData = новые ValidationData(); Ошибки ошибки = новые ошибки(); ошибки.Имя = правда; ошибки.Контакты = правда; result.UserInfo = UserDetails(); Боул showError = ложь; строка userID = Request.Form["userID"] == null ? "" : Request.Form["userID"].ToString(); ... другие данные из request.form если (проверкаFoundErrors) showError = true; если (показатьОшибку) { string jsFunc = string.Format("saveAlert({{ 'data': {0} }});", JsonConvert.SerializeObject(result, Formatting.None)); ScriptManager.RegisterStartupScript(this.Page, Page.GetType(), "myJsFn", jsFunc, true); } еще { SaveUser_Click(это, новый EventArgs()); } } защищенная информация пользователя UserDetails() { Результат UserInfo = новый UserInfo(); result.UserID= Request.Form["userID"] == null ?? "" : Request.Form["userID"].ToString(); result.Name = Request.Form["name"] == null ?? "" : Request.Form["имя"].ToString(); result.Contacts = Request.Form["contacts"] == null ?? "" : Request.Form["имя"].ToString(); вернуть результат; } общедоступная структура UserInfo { общественная строка UserID {get; набор; } общедоступная строка Имя {get; набор; } публичная строка Контакты {get; набор; } } Ошибки публичной структуры { public bool Имя {get; набор; } public bool Контакты { get; набор; } } общедоступная структура ValidationData { общественная UserInfo UserInfo {get; набор; } общественные ошибки ошибки {get; набор; } } } В моей файловой функции js saveAlert() в (*), когда я перебираю все входные данные и вызываю reportValidity() для всех входных данных, как мне сделать так, чтобы все входные данные с ошибками отображались во всплывающем окне с недопустимым сообщением вместо последний ввод.
У меня есть модальное окно boostrap4, и нажатие кнопки «Сохранить» в модальном окне выполнит проверку на сервере. После проверки наличия ошибок верните ошибки и используйте setCustomValidity для каждого ввода/выбора с ошибкой. Наконец, используйте reportValidity, чтобы отобразить все недействительные всплывающие сообщения.
Проблема в том, что всплывающее окно отображается только для последнего ввода/выбора ошибок, а не для всех.
... ... Имя: Контакты: Закрыть Сохранить function saveAlert({data = {}}) { пусть недействительныйInputs = []; setTimeout(() => { $("#modal").modal("показать"); },700); Object.entries(data.UserInfo).forEach((подробно) => { ..заполнить модальное окно данными }); Object.entries(data.Errors).forEach((ошибка) => { переключатель(ошибка[0].toLowerCase()) { случай «имя»: если (ошибка[1] == ложь) { validateInputs .push(document.querySelector("#name")); document.querySelector("#name").setCustomValidity("Пожалуйста, введите свое имя"); } перерыв; корпус «контакты»: если (ошибка[1] == ложь) { validateInputs .push(document.querySelector("#contacts")); document.querySelector("#contacts").setCustomValidity("Пожалуйста, укажите свои контакты."); } перерыв; по умолчанию: перерыв; } }); если (invalidateInputs.length > 0) { // (*) несмотря на то, что весь ввод зациклен, всплывающее окно появилось только при последнем вводе validateInputs.forEach((input) => { input.reportValidity(); // -> (*) }) } вернуть ложь; } с использованием системы; ... Пользователь публичного частичного класса: System.Web.UI.Page { protected void Page_Load (отправитель объекта, EventArgs e) { ...checkuser Session["pagename"] = "Пользователь"; } [System.Web.Services.WebMethod] общедоступная статическая строка GetUser() {} protected void ValidationCheck (отправитель объекта, EventArgs e) { Результат ValidationData = новые ValidationData(); Ошибки ошибки = новые ошибки(); ошибки.Имя = правда; ошибки.Контакты = правда; result.UserInfo = UserDetails(); Боул showError = ложь; строка userID = Request.Form["userID"] == null ? "" : Request.Form["userID"].ToString(); ... другие данные из request.form если (проверкаFoundErrors) showError = true; если (показатьОшибку) { string jsFunc = string.Format("saveAlert({{ 'data': {0} }});", JsonConvert.SerializeObject(result, Formatting.None)); ScriptManager.RegisterStartupScript(this.Page, Page.GetType(), "myJsFn", jsFunc, true); } еще { SaveUser_Click(это, новый EventArgs()); } } защищенная информация пользователя UserDetails() { Результат UserInfo = новый UserInfo(); result.UserID= Request.Form["userID"] == null ?? "" : Request.Form["userID"].ToString(); result.Name = Request.Form["name"] == null ?? "" : Request.Form["имя"].ToString(); result.Contacts = Request.Form["contacts"] == null ?? "" : Request.Form["имя"].ToString(); вернуть результат; } общедоступная структура UserInfo { общественная строка UserID {get; набор; } общедоступная строка Имя {get; набор; } публичная строка Контакты {get; набор; } } Ошибки публичной структуры { public bool Имя {get; набор; } public bool Контакты { get; набор; } } общедоступная структура ValidationData { общественная UserInfo UserInfo {get; набор; } общественные ошибки ошибки {get; набор; } } } В моей файловой функции js saveAlert() в (*), когда я перебираю все входные данные и вызываю reportValidity() для всех входных данных, как мне сделать так, чтобы все входные данные с ошибками отображались во всплывающем окне с недопустимым сообщением вместо последний ввод.
Мобильная версия