Как обработать 2 возможных значения индекса вкладки для набора элементов управления? - PullRequest
0 голосов
/ 29 мая 2018

Я пользуюсь 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());
    }
}

Эта функция работает для раскрывающихся меню, но не для текстовых полей.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...