Я пользуюсь Telerik's Kendo UI.В моей форме 6 текстовых полей: A, B, C, D, E и F.
Если значение A равно X, Y или Z, то BE нужно сделать доступным только для чтения,и мы хотим автоматически перейти к текстовому полю F.
Если значение A изменится, то нам нужно удалить состояние только для чтения для BE и сделать так, чтобы табуляция шла в исходном порядке.
На самом деле это работает как для Firefox, так и для Chrome, но Internet Explorer работает неправильно.Вкладка позволяет перейти из этих текстовых полей в совершенно отдельный набор элементов управления, не связанных с этим.
Итак, как мне сохранить 2 возможных значения вкладки (-1 или X, где X - это значение по умолчанию, при котором будет создан элемент управленияс), чтобы я мог динамически переключаться между элементами управления в зависимости от состояний только для чтения?
Обратите внимание, что я не могу рассчитывать на отключение элемента управления (вместо того, чтобы делать его только для чтения), потому что это вызывает проблемы;даже если элемент управления имеет значение, значение не передается на сервер, что приводит к null
для этого свойства.(см. этот пост SO )
Это код:
//This function will toggle the ReadOnly state of a control array
// based on the parent control's value
function SetReadOnly(controlArray, parentComboId)
{
var parentVal = $("#" + parentComboId).val();
var tabIndex = 1;
if (parentComboId == "A")
{
var regex = /07|09|10|88/;
if (regex.test(parentVal) || parentVal == "" || parentVal == "-")
{
isReadOnly = true;
tabIndex = -1;
}
else
{
isReadOnly = false;
tabIndex = 1;
}
for (var i = 0; i < controlArray.length; i++)
{
$("#" + controlArray[i]).prop("readonly", isReadOnly);
SetTabIndexVals2(controlArray[i], 'TEXTBOX', tabIndex);
}
}
else
{
// logic other groups of parent-child controls
}
}
// This function sets the tab index of the control
function SetTabIndexVals(controlID, controltype, tabIndex)
{
try
{
var _eTabIndex;
if (tabIndex == -1)
{
if (controltype == 'TEXTBOX')
{
_eTabIndex = $("#" + controlID).attr('tabindex');
if (_eTabIndex > 0)
{
$("#" + controlID).attr('Oldtabindex', _eTabIndex);
$("#" + controlID).attr('tabindex', tabIndex);
}
}
else
{
// logic for other types of controls
}
}
else
{
if (controltype == 'TEXTBOX')
{
_eTabIndex = $("#" + controlID).attr('Oldtabindex');
if (_eTabIndex == undefined || _eTabIndex < 0 || _eTabIndex == null)
_eTabIndex = $("#" + controlID).attr('tabindex');
$("#" + controlID).attr('Oldtabindex', _eTabIndex);
$("#" + controlID).attr('tabindex', _eTabIndex);
}
else
{
// logic for other types of controls
}
}
} catch (err)
{
logError(err, arguments.callee.trace());
}
}
Эта функция работает для раскрывающихся меню, но не для текстовых полей.