JavaScript: Как получить доступ к элементу на основе входного параметра? - PullRequest
0 голосов
/ 06 февраля 2011

Framework: Javascript, Jqgrid

У меня есть функция ниже JavaScript. Он получает массив полей и Jqgrid. Он устанавливает обязательный атрибут полей в true. Я хочу передать входную строку 'Required' и позволить функции установить для элемента 'Required' значение true. Таким образом, я могу повторно использовать эту функцию для установки атрибутов 'Integer', 'Email' и т. Д. Я ищу функцию, похожую на отражение Java в Javascript. Можете ли вы указать мне, если в Javascript есть способ сделать это?

        function setRequiredFields(fields, grid){
        for (var i = 0; i < fields.length; i++) {
            var colProp = $(grid).getColProp(fields[i]);                
            getColPropEditRules(colProp).Required = true;
            getColPropFormOptions(colProp).elmsuffix = " *";                
            $(grid).setColProp(fields[i], colProp);
        }
    }

Ответы [ 2 ]

0 голосов
/ 06 февраля 2011

Исправленная версия нужной вам функции может быть

function setRequiredFields(fields, grid) {
    for (var i = 0; i < fields.length; i++) {
        var colProp = $(grid).jqGrid('getColProp',fields[i]);
        if (typeof colProp.editrules === "undefined") {
            colProp.editrules = {};
        }
        colProp.editrules.required = true;
        if (typeof colProp.formoptions === "undefined") {
            colProp.formoptions = {};
        }
        colProp.formoptions.elmsuffix = " *";
    }
}

Возможно, вы можете дополнительно уменьшить $(grid) до grid.

Небольшие комментарии об изменениях.Свойство required editrules должно быть правильно написано без прописных символов.Более того, метод getColProp возвращает ссылку на соответствующий элемент colModel, поэтому вам не нужно дополнительно использовать setColProp.

0 голосов
/ 06 февраля 2011

Если я правильно понимаю вопрос, все, что вам нужно, это синтаксис "массива":

function setRequiredFields(fields, grid, propertyName){
    for (var i = 0; i < fields.length; i++) {
        var colProp = $(grid).getColProp(fields[i]);                
        getColPropEditRules(colProp) [propertyName] = true;
        getColPropFormOptions(colProp).elmsuffix = " *";                
        $(grid).setColProp(fields[i], colProp);
    }
}

Это то, что вы искали?

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