#javascript
#javascript
Вопрос:
Я хочу, чтобы страница переходила к элементу управления, когда соответствующий requiredfieldvalidator (ASP.Net ) был запущен. Я протестировал все фрагменты кода по отдельности, и все они работают нормально. Однако, когда я объединяю их в WebForm_OnSubmit() Я не могу найти controltovalidate. Код находит только некоторый объект, который всегда обладает этими свойствами:
Средства проверки,__BrowserLink_Сопоставление исходных текстов
Я понятия не имею, что это значит или почему это происходит. Кто-нибудь может указать мне на ошибку в коде?
Я пытался найти controltovalidate, используя как JS, так и jQuery, но они оба выдают один и тот же объект.
Вот код
function WebForm_OnSubmit() {
if (typeof (ValidatorOnSubmit) == "function" amp;amp; ValidatorOnSubmit() == false) {
for (var i in Page_Validators) {
//Verify it's the correct validation group amp; it's a triggered validation ctrl
try {
if (Page_Validators[i].validationGroup == "MyValidationGrp" amp;amp; !Page_Validators[i].isvalid) {
//I've used these lines just to verify it's finding the correct control ID value before trying to get the control. Both this and the jQuery below yield the same result
//var ControlToScrollToId = Page_Validators[i].controltovalidate;
//var ControlToScrollTo = document.getElementById(ControlToScrollToId);
//I've used this code to look at the properties of the object:
//alert(ControlToScrollToId " properties: " Object.getOwnPropertyNames(ControlToScrollTo));
var control = $("#" Page_Validators[i].controltovalidate);
var top = control.offset().top;
$('html, body').animate({ scrollTop: top - 10 }, 800);
control.focus();
break;
}
} catch (e)
{
console.error("Failed to scroll to validating control." e.message);
break;
}
}
return false;
}
return true;
}
В конечном итоге код всегда прокручивается до верха страницы, потому что значение ‘top’ всегда равно нулю. Вот почему я пошел назад, чтобы проверить объект и его свойства, и вот когда я застрял.
Ответ №1:
Основная причина: Проблема, по-видимому, связана с тем фактом, что я использую некоторые элементы управления, которые имеют класс «d-none» (Bootstrap 4x). Код ведет себя так, как я отмечал выше, когда присутствует этот класс. Однако, если я изменю класс на «невидимый», все будет работать нормально. Я все еще хотел бы знать, единственное ли это «решение», есть ли лучший способ сделать это.
О, я не использую скрытые поля, потому что ASP.net средства проверки не будут работать с этим.