У меня есть метод, который предположил, чтобы перебрать все элементы управления на моей странице и вернуть false, если какое-либо из них имеет значение, отличное от пустой строки/null. Это называется частью OnSaveValidation. Если форма пуста, то должен сэкономить.Как проверить, нет ли всех элементов управления на странице?
function IsFormEmpty()
{
var ancestor = document.getElementById('PAIQIFunc'); //PAIQIFunc is the id of a div
var descendents = ancestor.getElementsByTagName('*');
var i = 0;
for (i = 0; i < descendents.length; ++i)
{
var e = descendents[i];
try
{
var eVal = $("#" + e).val();
// just check to make sure eVal has *some* value
if (eVal != '' || eVal != undefined || eVal != null)
return false;
}
catch (err){
//simply move on to next control...
}
}
return true;
}
- код поступает из Loop through all descendants of a div - JS only
В большинстве случаев var eVal = $("#" + e).val();
выбрасывает исключение, потому что это div
или что-то подобное. Меня интересуют только 108 выпадающих меню и 1 текстовое поле в моей форме.
Я установил точку останова в своем заявлении if
, и он никогда не попадал. Но descendents
имеет в себе 1200 элементов; Я не мог бы пройти через все это, пытаясь найти то, что я ищу ...
Как еще я могу изменить код, чтобы проверить каждый элемент управления на странице?
EDIT: Я хотел бы отметить, что веб-приложение представляет собой проект C#/ASP.NET с помощью представлений Razor и мы используем Telerik в Кендо управления веб-интерфейса, а не «ванильные» управления .NET, если это делает разницу. Таким образом, все элементы управления определены в файле .cshtml следующим образом:
@(Html.Kendo().DropDownListFor(m => m.SomeProperty).HtmlAttributes(new { id = "cmbSomeProperty", @class = "k-dropdown-width-30", @tabIndex = "1", style = "width:60px" }).BindTo(ViewBag.SomePropertyDataSource).OptionLabel(" "))
Вы уже используете запрос, так почему бы просто не использовать его для выбора всех элементов формы (и только тех)? '$ ('# PAIQualityIndicatorFunctionalV14 input, # PAIQualityIndicatorFunctionalV14 select, # PAIQualityIndicatorFunctionalV14 anyelseyoumighthave')' – CBroe
@CBroe Извините, я не уверен, что вы имеете в виду. Я по-прежнему новичок в jquery/js в целом. Я не знаю, что вы пытаетесь показать в своем фрагменте кода. – sab669
@ sab669 - потому что вы не понимаете ответа, не делает его неправильным ответом. Почему бы не пойти читать jQuery и понять это. SO не предназначен для использования API-интерфейсов для загрузки ложки. Вы комментируете/задаете этот вопрос вне темы: слишком широкий **, потому что теперь вопрос: «Я не знаю jquery, и я хочу, чтобы вы объяснили мне фундаментальные основные вещи, потому что мне слишком лениво читать инструкции * *. –