Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Не правильно работает html() ? (https://javascript.ru/forum/jquery/41914-ne-pravilno-rabotaet-html.html)

carroty 04.10.2013 02:13

Не правильно работает html() ?
 
Здравствуйте форумчане!
Никогда не задавала вопросов на этом форуме, всегда находила ответы, но видимо пришел час Х.
При добавлении инфы в одной форме, должен обновляться select в другой форме, на jquery делаю так
$('#new_city').submit(function(){
            var rel = $(this).attr('data-rel');
            var country_id = $(this).val();
            
            $.ajax({
                type: 'post',
                url: $('#new_city').attr('action'),
                data: $('#new_city').serialize(),
                success: function(result)
                {
                    var options = '';
                     $(result.cities).each(function(){
                        
                    options += '<option value="' + $(this).attr('city_id') + '">' +  $(this).attr('city_ru') + '</option>';                   
                     });
                   $('.city_1[data-rel="' + rel + '"]').html(options); 
                  // console.log(options);
                }
            })
            return false;
        });

html(options) вроде бы должен добавлять новый элемент в select после удачной отправки данных, проверяю переменную options в консоли, да новый список с новым элементом сформировался, но в самом select'e city этот новый элемент не отображается, приходится заново клацать по списку стран, чтобы обновился список городов. В чем может быть проблема? Благодарю за внимание!
html-код формы, в которой должен обновляться select
<form id="timetable_city" name="timetable_city" action="/admin/timetable/add-timetble-city" method="post">
<input type="hidden" name="timetable_id" value="" id="timetable_id">
<select name="country_id_1" id="country_id_1" data-rel="1" class="country_1 left_10 ">
    <option value="0">-Выберите страну-</option>
    <option value="1">Австрия</option>
    <option value="2">Беларусь</option>
    <option value="3">Бельгия</option>
</select>
<select name="city_id_1" id="city_id_1" data-rel="1" class="city_1 ">
    <option value="0">-Выберите город-</option>
</select>
<a href="#add_city" class="add_city " data-toggle="modal" data-rel="1" title="Добавить город"><i class="icon-plus-sign"></i></a>
<select name="bus_station_1" id="bus_station_1" data-rel="1" class="bus_station_1 ">
    <option value="0">-Место прибытия-</option>
</select>
<select name="country_id_2" id="country_id_2" data-rel="2" class="country_1 left_10 ">
    <option value="0">-Выберите страну-</option>
    <option value="1">Австрия</option>
    <option value="2">Беларусь</option>
    <option value="3">Бельгия</option>
</select>
<select name="city_id_2" id="city_id_2" data-rel="2" class="city_1 ">
    <option value="0">-Выберите город-</option>
</select>
<a href="#add_city" class="add_city " data-toggle="modal" data-rel="1" title="Добавить город"><i class="icon-plus-sign"></i></a>
<select name="bus_station_2" id="bus_station_2" data-rel="2" class="bus_station_1 ">
    <option value="0">-Место прибытия-</option>
</select>
<!- и таких select'ов страна-город-место в форме 30 штук ->
</form>

BETEPAH 04.10.2013 10:34

Цитата:

Сообщение от carroty
$('#new_city').submit(function(){

А можно посмотреть эту форму?

Беларусь пишется через "а".

carroty 04.10.2013 12:49

[quote=BETEPAH;275030]А можно посмотреть эту форму?
Конечно можно
<form id="new_city" name="new_city" action="/admin/timetable/add-city" method="post">
<select name="country_id" id="country_id">
    <option value="0">-Выберите страну-</option>
    <option value="1">Австрия</option>
    <option value="2">Беларусь</option>
    <option value="3">Бельгия</option>
</select>
<input type="text" name="city_ru" id="city_ru" value="" placeholder="Город рус.">
<input type="text" name="city_en" id="city_en" value="" placeholder="Город англ.">
<input type="submit" name="submit" id="submit" value="Добавить новый город" class="btn btn-primary">
<button name="button" id="button" type="button" class="btn button_close" data-dismiss="modal" aria-hidden="true">Закрыть</button></form>

Вы правы, Беларусь :)

BETEPAH 04.10.2013 13:03

тогда непонятно начало скрипта:
$('#new_city').submit(function(){
            var rel = $(this).attr('data-rel');
            var country_id = $(this).val();

куда у Вас показывает this?

carroty 04.10.2013 13:29

Цитата:

Сообщение от BETEPAH (Сообщение 275046)
тогда непонятно начало скрипта:
$('#new_city').submit(function(){
            var rel = $(this).attr('data-rel');
            var country_id = $(this).val();

куда у Вас показывает this?

В первой форме есть ссылки с атрибутами data-rel="1", data-rel="2" и т.д. при клике на которые открывается всплывающая форма для добавления нового города, data-rel использую для того, чтобы узнать в какой именно select city возвращать новый список городов, т.к. таких select city в форме 30 штук. Переменная country_id на данный момент не используется, в будущем будет использоваться

BETEPAH 04.10.2013 13:35

carroty, Вы можете ответить на вопрос? :)
Ссылка на какой элемент находится в this, в выделенном куске кода? Можете поставить там консоль.лог и посмотреть, что в итоге попадает в rel?

carroty 04.10.2013 13:41

в rel = $(this).attr('data-rel') попадает Undefined
логично, в скрипте я обрабатываю форму, в которой и близко нет data-rel и скрипт не знает куда возвращать результат, тогда как указать скрипту куда именно надо возвращать результат?

BETEPAH 04.10.2013 14:02

Цитата:

Сообщение от carroty
в скрипте я обрабатываю форму, в которой и близко нет data-rel

ну, вот! :) Наконец-то.
Вопрос не в том, куда возвращать, а в том, откуда брать. Замените this в скрипте на нужный элемент.

carroty 04.10.2013 14:12

Как все просто оказалось! Спасибо вам, Человек! :)


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