Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Как заменить заменить поле в форме и отсортировать строки <option>? (https://javascript.ru/forum/misc/18855-kak-zamenit-zamenit-pole-v-forme-i-otsortirovat-stroki-option.html)

monolithed 18.07.2011 22:25

Цитата:

Сообщение от ksa
Из моего примера видно...

действительно, извини, долго вглядывался пока поиском по тексту не воспользовался)) :)

MaxD 18.07.2011 22:33

Какая-то лажа с jquery выборкой, даже когда пишу такую простую конструкцию, как
$('#region > option').hide();

Ничего не происходит!(((

MaxD 19.07.2011 12:09

Проблема еще не решена, парни!))) Нужна помощь, что я не правильно делаю в выборке?!

monolithed 19.07.2011 12:39

MaxD, видимо задача поставлена верно. найдит другое решение

MaxD 19.07.2011 12:54

Да я уже кучу перепробовал, но проблема с выборкой!
Даже простой скрипт не убирает поля <option>, вот я и не пойму почему, тут же куча профессоров, что я неправильно пишу?!

$('#region > option').hide();

melky 19.07.2011 13:29

попробуй убрать >

MaxD 19.07.2011 13:42

Все равно не пашет!(( Парни дайте ссылочку, где можно скачать последнюю версию Jquery, я посмотрел, у меня оказывается файл какой-то корявый!))

MaxD 19.07.2011 13:43

А хотя может и нет!) Не знаю, но почему-то не работает эта выборка((

monolithed 19.07.2011 14:33

Цитата:

Сообщение от MaxD
Парни дайте ссылочку, где можно скачать последнюю версию Jquery

может еще дать ссылку на гугл? это уже смешно.

melky 19.07.2011 15:13

<option value="-1" selected="">Выберите регион</option>
<option value="0">Другой</option>
<option id="2" value="2"></option>
<option id="1" value="1">Калининград</option>
<option id="2" value="3">Сувалкия</option>
<option id="2" value="4">Жемайтия</option>
<option id="1" value="5">Нижегородская </option>
<option id="1" value="6">Воронежская</option>


такого быть не может.
пиши им name чтоли. но не id. элемент с идентификатором должен быть уникальным!


скрипт лёгкий до ужаса... сам чтоли не мог написать?

выложу тут . если что - еще лежит на fiddle
Пример: запускай.
<!DOCTYPE HTML>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">


<select size="1" name="country" id="country">
<option value="-1" selected disabled>Выберите страну</option>
<option value="0">Другая</option>
<option value="1">Россия</option>
<option value="2">Литва</option>
</select>
    
<select size="1" name="region" id="region">
<option value="-1" selected="">Выберите регион</option>
<option value="0">Другой</option>
<option id="2" value="2"></option>
<option id="1" value="1">Калининград</option>
<option id="2" value="3">Сувалкия</option>
<option id="2" value="4">Жемайтия</option>
<option id="1" value="5">Нижегородская </option>
<option id="1" value="6">Воронежская</option>
</select>

<script>

var sels = {
    'country' : document.getElementById('country'),
    'region' : document.getElementById('region')
};

var database = {};

var currentOption = {}, i, b;

for(i = 0; i < sels.country.options.length; i += 1 ) {

    currentOption.country = sels.country.options[ i ];
    database[ currentOption.country.value ]  = [];
    
    for(b = 0; b < sels.region.options.length; b += 1 ) {
        currentOption.region = sels.region.options[b]

		
        if( currentOption.country.value === currentOption.region.id && currentOption.region.text.length !== 0 ){
            database[ currentOption.country.value ].push( currentOption.region );
        }
        
        
    };
    
};

sels.region.style.display = 'none';
sels.region.options.length = 0;

sels.country.onchange = function(){
	sels.region.options.length = 0;
    sels.region.style.display = 'inline';
    
    var optionsArray = database[ this.value ], i;
    
    for( i = 0; i < optionsArray.length; i += 1 ){
    	sels.region.options.add( optionsArray[i] );
    }
};
</script>


Внимание! добавление в хеш (читай : соответствие делается так )
currentOption.country.value === currentOption.region.id && currentOption.region.text.length !== 0


т.е. если у них одинаковы value (у страны) и id ( у региона)
и если в этой опции есть какой-то текст


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