Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   jquery select: name, selected (https://javascript.ru/forum/jquery/42858-jquery-select-name-selected.html)

jk888 12.11.2013 12:37

jquery select: name, selected
 
Здравствуйте, уважаемые.

Вот здесь имеется урок по реализации последовательного выбора на jquery.
С моими совсем не глубокими знаниями явы этот урок легко выполняется. Но для дальнейшего его усовершенствования моих знаний совсем не хватает. А надо совсем не много: задать name и расставить selected.

Если name еще можно сделать тупо так
<select name="'+r.defaultText+'" data-placeholder="'+r.defaultText+'">\
вместо имеющегося
<select data-placeholder="'+r.defaultText+'">\
, то как быть с selected вообще ума не приложу.

И еще. Получается, что в name (в моем случае) будут вставляться русские слова, и возможно даже с посторонними символами, что конечно совсем не желательно. Можно ли сделать еще один параметр для ID товара, что-то типа:
/* конфигурация элементов select */

// Продукт

$productSelect = new SelectBox('Что желаете купить?','Выберите категорию продукта');
$productSelect->addItem('id1633461','Телефоны','phoneSelect',)
			  ->addItem('id35247','Ноутбуки','notebookSelect')
			  ->addItem('id3463471','Планшеты','tabletSelect');

// Типы телефонов

$phoneSelect = new SelectBox('Какой тип телефона вы хотите?', 'Выберите тип телефона');
$phoneSelect->addItem('id27386925','Смартфон','smartphoneSelect')
			->addItem('id3482885','Обычный телефон','featurephoneSelect');

// Смартфоны

$smartphoneSelect = new SelectBox('Какой смартфон вам нужен?','Выберите модель смартфона');
$smartphoneSelect->addItem('id457856823','Samsung Galaxy Nexus')
				 ->addItem('id8926734','iPhone 4S','iphoneSelect')
				 ->addItem('id5782358','Samsung Galaxy S2')
				 ->addItem('id4832645','HTC Sensation');
...
что бы в name вставлять id товара, а не его наименование.

В любом случае, вообщем, моя задача состоит в том, что бы из огромной mysql базы формировать последовательные списки select. Сейчас на сайте использую вот этот урок. Но т.к. база большая (и растет), и все option незримо присутствуют в html, то от этого страница очень долго грузится, и списки неприятно шевелятся, пока не сформируются окончательно. Урок из же из jquery отличный, но постоянно сбрасывается при отправлении формы (name`ы на русском, на самом деле, работают, главное следить, что бы кавычек не было, но все равно ссыкотно почему-то).

Был бы признателен любой помощи (хотя бы с selected).
Спасибо.

jsru_ 12.11.2013 12:59

selected - это уже выбранный элемент, в каком месте ты хочешь реализовать selected? у тебя ведь подгружаются готовые списки

jk888 12.11.2013 13:17

Нужно, что бы выбранные select`ы после отправки формы оставались в том же состоянии, как перед нажатием submit.
Что бы можно было, например, изменить только последний параметр, а не начинать каждый раз весь отбор заново, от первого select`а.

jsru_ 12.11.2013 13:25

так если у тебя данные отправляются по аяксу - ты просто добавь возврат false при нажатии на сабмит и не будет перезагрузки страницы, соответственно селекты не обнулятся

jk888 12.11.2013 13:35

Подскажите пожалуйста, как это выглядет в виде кода, и в каком месте.

jsru_ 12.11.2013 13:38

выложи свой код на jsfiddle.net

jk888 12.11.2013 13:46

Что-то не открывется :(

А ведь там же все коды уже приведены, кроме chosen.jquery.min.js

jsru_ 12.11.2013 13:49

там нет твоей кнопочки submit, ты подожди чуток или выложи сюда http://learn.javascript.ru/play

jk888 12.11.2013 14:09

Вот выложил, только не работает там что-то, может быть из-за ajax.php, но вообщем весь код там.

jsru_ 12.11.2013 14:13

добавь onclick="return false" к своему сабмиту:

<input type='submit' onclick="функция обработки клика; return false" value='Go Go Go' style='padding: 5px;'>

jk888 12.11.2013 14:24

onclick="return false" ничего никуда не отправляется :(

так если у тебя данные отправляются по аяксу
Так вот вы что имели ввиду. Нет, я не в аякс данные отправляю. Я по старинке, после перезагрузки страницы ловлю их в php.
Что-то типа post=Array ( [Выберите_категорию_продукт а] => Ноутбуки [Выберите_модель_ноутбука] => Macbook Air )

jsru_ 12.11.2013 15:10

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

мне кажется, если ты будешь пытаться осуществить свою идею через те методы что ты привел, то это будет дикий костыль, тебе надо переделать код, особенно, формирование дом элемента надо вынести в отдельную функцию, которой кормятся атрибуты "select" и "option" и json ответ. в свою очередь обрабатывая пост переменные ты можешь вызвать эти функции формирования дом элементов, не вижу вариантов лучше

jk888 12.11.2013 16:25

Эх. Хоть не придется тратить время, в надежде разобраться.
Спасибо.


Часовой пояс GMT +3, время: 21:18.