Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 20.03.2015, 00:05
Профессор
Отправить личное сообщение для porezon Посмотреть профиль Найти все сообщения от porezon
 
Регистрация: 09.01.2013
Сообщений: 167

Вывести select'ы
Доброе время суток!
Есть JS код, он выводит параметры для категорий. выглядит примерно вот так



если леговые авто поменять на другое, то другие параметры появятся.

Так вот в чем проблема, когда я выбираю все данные которые мне нужна, я незнаю по каким запросом POST их передают в форме.

если кто может подсказать каждый name из этих select, буду благодарен, код js здесь глянуть можно.


<script type="text/javascript" src="http://doska.ykt.ru/media/js/jquery-1.8.3.min.js?64" charset="utf-8"></script>
<script type="text/javascript" src="http://doska.ykt.ru/media/js/funcs.js?64%22" charset="utf-8"></script>
<script type="text/javascript" src="http://doska.ykt.ru/catsjson.jsjsp?outVar=CATS_JSON&amp;region=yakutsk" charset="utf-8"></script>



<table class="newpost-params" cellpadding="0" cellspacing="0">
<tr>
<td class="title">-</td>
<td>
                   
<select class="region-select-add" name="region" id="regions" onchange="regionChange(this)">
<option value="ya" selected="selected">Я</option>
</select>
</td>
</tr>
<tr>

<td class="title">-</td>

<td class="input cats">

<script type="text/javascript">
<!--
var CATS_VALUES_JSON = {"sid":"-1","rid":"-1","cid":"-1"}
//var CATS_JSON = cat json data; // set from catsjson.js

var CAT_URL_PARAM_NAME = "cid";
var SUBCAT_URL_PARAM_NAME = "sid";
var RUB_URL_PARAM_NAME = "rid";

/*controls*/

var REGIONS_SELECT;
var CATS_SELECT;
var SUBCATS_SELECT;
var RUBRICS_SELECT;
var OPTIONS_CONTAINER;

var MAIN_OPTIONS_CONTAINER;

var CURRENT_CAT;
var LAST_RUB_NAME;
var MAIN_OPT_ID = -1;
var LOWER_YEAR_OPT_ID = -1;
var UPPER_YEAR_OPT_ID = -1;

function fillCats(CATS_JSON) {
    fillSelect(CATS_SELECT, CATS_JSON, true);

    var catId = null;
    if (CATS_VALUES_JSON.cid != undefined) {
        catId = CATS_VALUES_JSON.cid;
    } else {
        catId = getUrlParam(CAT_URL_PARAM_NAME);
    }
    setSelectValue(CATS_SELECT, catId);
    onCatsChanged();
}

function renewCurrentCat() {
    var currentCatId = CATS_SELECT.val();
    CURRENT_CAT = getCatById(currentCatId);
    
    var priceEl = $("#price");
    if (CURRENT_CAT.showPrice) {
        priceEl.show();
    } else {
        priceEl.hide();
    }
    
}

function fillSelect(el, selectData, isClear) {
    if (isClear && el) {
        el.empty();
    }
    $.each(selectData, function (i, item) {
        el.append($("<option>", {
            value: item.id,
            text: item.name,
            isPriceRequired: item.isPriceRequired,
            minPriceLength: item.minPriceLength,
            hasLimitation: item.hasLimitation
        }));
    });
}

function resetSubCats() {
    fillSelect(SUBCATS_SELECT, CURRENT_CAT.subcats, true);

    var subCatId = null;
    if (CATS_VALUES_JSON.sid != undefined) {
        subCatId = CATS_VALUES_JSON.sid;
    } else {
        subCatId = getUrlParam(SUBCAT_URL_PARAM_NAME);
    }
    setSelectValue(SUBCATS_SELECT, subCatId);
    var currentSubCat = getCurrentSubCat();
    resetRubrics(currentSubCat);
    resetOptions(currentSubCat);
}

function getCurrentSubCat() {
    var selectedSubCatId = SUBCATS_SELECT.val();
    return getSubCatById(CURRENT_CAT, selectedSubCatId);
}

function getCatById(id) {
    var result = null;
    $.each(CATS_JSON, function (i, item) {
        if (item.id == id) {
            result = item;
            return false;
        }
    });
    return result;
}

function getSubCatById(cat, subCatId) {
    var result = null;
    $.each(cat.subcats, function (i, item) {
        if (item.id == subCatId) {
            result = item;
            return false;
        }
    });
    return result;
}
function resetRubrics(subCat) {
    if (subCat.id > 0) {
        fillRubrics(subCat.rubrics);
    } else {
        fillRubrics(getRubricsByCat(CURRENT_CAT));
    }
    setRubricSelected();
}
function fillRubrics(rubrics) {
    fillSelect(RUBRICS_SELECT, rubrics, true);
}

function getRubricsByCat(cat) {
    var rubricsJson = [];

    $.each(cat.subcats, function (i, subcat) {
        $.each(subcat.rubrics, function (j, rubric) {
            if (!isRubricExist(rubricsJson, rubric)) {
                rubricsJson.push({id: rubric.id, name: rubric.name});
            }
        });
    });
    return rubricsJson;
}

function isRubricExist(rubricsJson, rubric) {
    var result = false;
    $.each(rubricsJson, function (i, item) {
        if (item.id == rubric.id || item.name == rubric.name) {
            result = item;
            return false;
        }
    });
    return result;
}

function setRubricSelected() {
    if (LAST_RUB_NAME != undefined) {
        setSelectValueByText(RUBRICS_SELECT, LAST_RUB_NAME);
    } else {
        setRubricsSelectValue(RUBRICS_SELECT);
    }
}

function onRegionsChanged() {
    fillCats(CATS_JSON);
}

function onCatsChanged() {
    renewCurrentCat();
    resetSubCats();
}

function onSubCatsChanged() {
    var currentSubCat = getCurrentSubCat();
    resetRubrics(currentSubCat);
    resetOptions(currentSubCat);
}

function onRubricsChanged() {
    if (RUBRICS_SELECT.selectedIndex > 0) {
        LAST_RUB_NAME = RUBRICS_SELECT.item(RUBRICS_SELECT.selectedIndex).text;
    }
}

function resetOptions(subCat) {
    OPTIONS_CONTAINER.empty();
    
    var isShowOpts = subCat.options.length > 0;
    var optsContainerEl = $("#subcat-opts-container");
    if (isShowOpts) {
        optsContainerEl.show();
    } else {
        optsContainerEl.hide();
    }
    
    $.each(subCat.options, function (i, opt) {
        var isRenderOptControl = true;
        
        isRenderOptControl = opt.id > 0;
        
        if (isRenderOptControl) {
            var optControl = createOption(opt);

            var container = OPTIONS_CONTAINER;
            

            container.append(optControl);

            var selectedVal = getUrlParam(opt.id);
            if (CATS_VALUES_JSON.hasOwnProperty(opt.id)) {
                selectedVal = CATS_VALUES_JSON[opt.id];
            }
            setSelectValue(optControl, selectedVal);


            optControl.trigger("change");
        }
    });
}

function createOption(option) {
    var optControl = $("<select>", {
        id: option.id,
        name: option.id
    });
    optControl.addClass("ui-input-select ui-input-select__state-small ui-input-select__size3");

    if (option.valId) {
        optControl.attr("valId", option.valId);
    }

    var optionName = option.name;
    

    optControl.append($("<option>", {
        value: -1,
        text: "-- " + optionName + " --"
    }));

    $.each(option.values, function (i, item) {
        optControl.append($("<option>", {
            value: item.id,
            text: item.name
        }));

        if (item.depOpts != undefined) {

            var createDepOptsContainer = function (selectedVal) {
                var container = $("#dep-opts-" + item.optId);
                var isContainerExist = container.length > 0;
                if (selectedVal < 1) {
                    if (isContainerExist) {
                        var depOptControl = $('*', container).first();
                        depOptControl.get(0).options.length = 1;
                        depOptControl.attr({"disabled": true});
                    }
                } else if (selectedVal == item.id) {
                    if (isContainerExist) {
                        container.empty();
                    } else {
                        container.remove();
                        container = $("<span>", {
                            id: "dep-opts-" + item.optId
                        });
                        container.insertAfter(optControl);
                    }
                }
                return container;
            };

            var showDepOpts = function (depOpts, selectedVal) {
                $.each(depOpts, function (i, depOpt) {
                    var depOptControl = createOption(depOpt);
                    var container = createDepOptsContainer(selectedVal);
                    container.append(depOptControl);
                    var presetSelectedVal = getUrlParam(depOpt.id);

                    if (CATS_VALUES_JSON.hasOwnProperty(depOpt.id)) {
                        presetSelectedVal = CATS_VALUES_JSON[depOpt.id];
                    }
                    if (presetSelectedVal != null) {
                        selectedVal = presetSelectedVal;
                    }

                    setSelectValue(depOptControl, selectedVal);
                });
            };
            optControl.change(function () {
                var selectedVal = optControl.val();
                if (selectedVal == item.id) {
                    showDepOpts(item.depOpts, selectedVal);
                } else if (selectedVal < 1) {
                    createDepOptsContainer(selectedVal);
                }
            });
        }
    });
    return optControl;
}

function initCategoriesSelect() {

    /* html selects */
    CATS_SELECT = $("#cats");
    SUBCATS_SELECT = $("#subcats");
    RUBRICS_SELECT = $("#rubrics");
    OPTIONS_CONTAINER = $("#search-subcat-options");

    if (CATS_VALUES_JSON.cid != undefined) {
        JSON_CAT_ID = CATS_VALUES_JSON.cid;
    }
    
    
    
    fillCats(CATS_JSON);

    CATS_SELECT.change(onCatsChanged);
    SUBCATS_SELECT.change(onSubCatsChanged);
    RUBRICS_SELECT.change(onRubricsChanged);
    
    

}
//-->
</script>

<select id="cats" name="cid" ></select>
<select id="subcats" name="sid" ></select>
<select id="rubrics" name="rid" ></select>

                </td>
            </tr>

            <tr id="subcat-opts-container" style="display: none;">
                <td>Параметры</td>
                <td>
                    <div id="search-subcat-options"></div>
                </td>
            </tr>
            <script type="text/javascript">
                initCategoriesSelect();
            </script>
</table>

Последний раз редактировалось porezon, 20.03.2015 в 00:19.
Ответить с цитированием
  #2 (permalink)  
Старый 20.03.2015, 12:40
Профессор
Отправить личное сообщение для porezon Посмотреть профиль Найти все сообщения от porezon
 
Регистрация: 09.01.2013
Сообщений: 167

ну помогите хоть ктонибудь
Ответить с цитированием
  #3 (permalink)  
Старый 20.03.2015, 13:33
Профессор
Отправить личное сообщение для demoniqus Посмотреть профиль Найти все сообщения от demoniqus
 
Регистрация: 28.05.2008
Сообщений: 181

Отвечаем: не зря учат в школе грамматике.
Цитата:
я незнаю по каким запросом POST их передают в форме.
Не понятен вопрос.
Ответить с цитированием
  #4 (permalink)  
Старый 20.03.2015, 13:53
Профессор
Отправить личное сообщение для porezon Посмотреть профиль Найти все сообщения от porezon
 
Регистрация: 09.01.2013
Сообщений: 167

вообщем, я совсем не разбираюсь в JS.

Вот например у меня в селектах стоят name

<select id="cats" name="cid" ></select>
<select id="subcats" name="sid" ></select>
<select id="rubrics" name="rid" ></select>

при отправке я записываю данные из селектов вот тат,

$cid = $_POST['cid'];
$sid = $_POST['sid'];
$rid = $_POST['rid'];

это я вывожу в базу категории которые были выбраны, но после выбора категория открываются еще параметры.

И я незнаю какие name содержат параметры из JS, я хочу их так же передать в базу но незнаю их наиминований
Ответить с цитированием
  #5 (permalink)  
Старый 20.03.2015, 14:05
Профессор
Отправить личное сообщение для demoniqus Посмотреть профиль Найти все сообщения от demoniqus
 
Регистрация: 28.05.2008
Сообщений: 181

Берешь любой современный браузер с нормальным отладчиком (FF, Chrome, старшие версии IE), щелкаешь правой кнопкой мыши по нужному полю и выбираешь "Просмотреть код элемента" ("Инспектировать ..." и т.п.) и смотришь атрибуты name.
На стороне php ты уже никак не узнаешь, какой параметр соответствовал какому полю - только тупо сохранять всё и сразу.
Остается вероятность, что при определенных состояниях форма может терять или получать новые поля, поэтому надо досконально ее изучить. Я сам так делал с одной весьма мудреной формой. Правда у меня предполагался костыльный ГАРАНТИРОВАННЫЙ доступ на страницу с этой формой и я имел возможность в автоматическом режиме просто собрать все поля определенных типов с их значениями, а потом, сопоставив собранные name со своим списком, сохранить нужные данные.
Ответить с цитированием
  #6 (permalink)  
Старый 20.03.2015, 14:24
Профессор
Отправить личное сообщение для porezon Посмотреть профиль Найти все сообщения от porezon
 
Регистрация: 09.01.2013
Сообщений: 167

спасибо, сейчас буду разбиратся
Ответить с цитированием
  #7 (permalink)  
Старый 24.03.2015, 17:11
Профессор
Отправить личное сообщение для porezon Посмотреть профиль Найти все сообщения от porezon
 
Регистрация: 09.01.2013
Сообщений: 167

есть у кого еще варианты или может готовым кодом кто поделится? потому что по 1 очень долго уж выбирать
Ответить с цитированием
  #8 (permalink)  
Старый 25.03.2015, 10:34
Профессор
Отправить личное сообщение для porezon Посмотреть профиль Найти все сообщения от porezon
 
Регистрация: 09.01.2013
Сообщений: 167

помогите еще советом
Ответить с цитированием
  #9 (permalink)  
Старый 29.03.2015, 22:08
Профессор
Отправить личное сообщение для porezon Посмотреть профиль Найти все сообщения от porezon
 
Регистрация: 09.01.2013
Сообщений: 167

помогите пожалуйста
Ответить с цитированием
  #10 (permalink)  
Старый 30.03.2015, 03:23
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сделайте выбор во всех списках, и по приему формы выполните на сервере

echo '<pre>';
print_r($_POST);
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как вывести дату, чтобы не повторять скрипт пару раз xXapokalypsesXx Общие вопросы Javascript 10 27.06.2013 13:43
Посчитать кол-во div и вывести сумму. djonA Общие вопросы Javascript 11 27.05.2013 08:45
вывести адрес сайта Radioactive Элементы интерфейса 4 16.05.2013 02:37
Как вывести данные из PHP Sherminator Events/DOM/Window 2 07.08.2012 20:11
Подскажите, пжлст, как вывести в тот же документ результат ф-ции? LexXxeL Элементы интерфейса 4 13.05.2009 13:26