Поиск элемента в WebForm_OnSubmit()

#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 средства проверки не будут работать с этим.