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)

MaxD 18.07.2011 14:36

Как заменить заменить поле в форме и отсортировать строки <option>?
 
Вот моя форма, для примера выкладываю только несколько полей!
<form action="<?=base_url();?>create/<?=$this->session->userdata('user_id')?>" method="post" >
            <table cellpadding="4"  cellpadding="2" align='center' style="margin-top: 10px; vertical-align: top;">
                <tr>
                	<td>Страна:</td>
                	<td><select size='1' name='country' id='country'>
                        <option value='-1' selected>Выберите страну</option>
                        <option value='0'>Другая</option>
                         <?
                            foreach($country as $country_id)
                            {
                                echo "<option value='".$country_id['id']."'>".$country_id['country_n']."</option>"; 
                            }
                         ?>   
                         </select>
                      </td>
                </tr>
                <tr>
                	<td>Регион:</td>
                	<td><select size='1' name='region' id='region'>
                        <option value='-1' selected>Выберите регион</option>
                        <option value='0'>Другой</option>
                         
                           <?foreach($region as $region_id)
                            {
                                echo "<option id='".$region_id['country']."' value='".$region_id['id']."'>".$region_id['region_n']."</option>"; 
                            }
                         ?>   
                         
                    </select></td>
                </tr>
            </table>
<input type="text" name="t" id="t" style="display: none;"/>
        </form>


Меня интересует
1. Как сделать чтобы при выборе строки "Другая" в поле "Страна" появлялось обычное поле для ввода текста и у него был атрибут "name" = "country"
2. Когда выбираешь страну, мне нужно получить его value и в зависимости от этого значения, нужно оставить строки <option> в поле "Регион" с id, равный этому значению, а другие скрыть!

ksa 18.07.2011 14:57

Цитата:

Сообщение от MaxD
1. Как сделать чтобы при выборе строки "Другая" в поле "Страна" появлялось обычное поле для ввода текста и у него был атрибут "name" = "country"

Как вариант сразу это поле спрятать... И по надобности его показывать/прятать...

Цитата:

Сообщение от MaxD
2. Когда выбираешь страну, мне нужно получить его value и в зависимости от этого значения, нужно оставить строки <option> в поле "Регион" с id, равный этому значению, а другие скрыть!

И что в этом списке тебе неподвластно? :)

melky 18.07.2011 15:00

выложи сюда не фарш, а HTML с отработавшим php

тогда уже можно будет говорить о чем-либо

MaxD 18.07.2011 15:20

Написал вот такой код, для решения первой проблемы, но он почему-то не работает?!
$('#country').change(
        function(){
            if($(this).val() == 0){
            $('#country').hide();
            $('#t').show().attr({'name':'country'});
            }
            });

А точнее сказать поле input просто появляется на своем месте, а не на месте select!

MaxD 18.07.2011 16:43

С первой проблемой разобрался, но вот со второй по прежнему труности!
Вот такой код на данный момент, скажите что делаю не верно!?
// Замена селекта на инпут
$('#country').change(
        function(){
            var val_c = $(this).val();
            if(val_c == 0){
            $('#country').hide().before($('#t'));
            $('#t').show().attr({'name':'country'}).text('Название города');
            }
// Сортировка элементов option
            if (val_c > 0)
            {
                var opt_r = $('#region :option[value = '+val_c+']');
                var opt = $('#region :option[value > 0]');
                $(opt).hide();
                $(opt_r).show();
                
            }
});

monolithed 18.07.2011 17:51

оно?

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js"></script>

<script>
$(function() {
    var form = $('[name="form"]'), 
        array = ['Челябинск', 'Севастополь'];
    $('select', form).change(function() {
        $('input', form).removeAttr('disabled').val(array[this.selectedIndex-1]);
    });     
});
</script>

<form name="form">
    <select>
        <option value="0">-- выберите --</option>
        <option value="1">Россия</option>
        <option value="2">Украина</option>
    </select>
    <input type="text" value="" disabled="" />
</form>

MaxD 18.07.2011 18:10

Не это не то!)
Мне нужно чтобы в зависимости от value выбранной страны, в поле <select name='region' id='region' оставались только те <option> у которых id равен value выбранной страны, а остальные <option> должны скрываться за исключением <option value='0'>Другой<option>!

Вот к примеру как сделать чтобы при выборе Россия, в поле регион оставались только города с id = '1', а пре выборе Литва, только с id='2'?
<tr>
<td>
<td>
<select size="1" name="country" id="country">
<option value="-1" selected="">Выберите страну</option>
<option value="0">Другая</option>
<option value="1">Россия</option>
<option value="2">Литва</option>
</select>
</td>
</tr>

<tr>
<td>Регион:</td>
<td>
<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>
</td>

melky 18.07.2011 18:11

вот прочитай эту статью !

всё станет предельно ясно

MaxD 18.07.2011 18:16

Я прочитал, там все объяснено на премитивном уровне, это я и сам знаю! А вот как это все совместить с переменными, не создавая никаких масивов с заранее известными строками, я так запарюсь сидеть записывать каждый регион!

И тем более я уверен в том, что все можно сделать гораздо проще и эфективнее!

MaxD 18.07.2011 18:30

Еще раз прочитал и все равно остаюсь на той же точке "Абсолютного непонимания решения моего вопроса"!


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