JQuery AJAX цепи выбран не работает (штопать IE!), но отлично работает в FF - PullRequest
0 голосов
/ 16 марта 2011

У меня есть форма, в которой пользователь вводит 6-значный номер и нажимает кнопку поиска. Выполняется Ajax-вызов, который возвращает другую форму данных (без обновления страницы). В возвращаемых данных находится цепочка выбора (более одного, если возвращается более одного элемента). Ниже приведен код AJAX.

$(".platform").live("change", function() {
    alert('Updating models...');
    var firstOption = $(this);
    if (firstOption.closest('tr').find('.platform').val() == '')
        {
            firstOption.closest('tr').find('.model').html('<option value=""></option>');                
        }
    else
        {
            firstOption.closest('tr').find('.model').html('<option value="">Updating...</option>');
            $.getJSON("dataCalls/getModels.cfm",{platform: $(this).val()},      
            function(j){
                var options = '';
                for (var i = 0; i < j.length; i++) 
                    {
                        options += '<option value="' + j[i].optionValue + '">' + j[i].optionDisplay + '</option>';
                    }
            firstOption.closest('tr').find('.model').html(options).effect("highlight", {}, 3000);
            });
        }
});

Это прекрасно работает в FF, но не в IE7. Я не тестировал в IE 8. Стандарты нашей компании все еще 7, хотя мы переходим на 8, поэтому он должен работать в 7.

Вот код, который должен вызывать вызов ajax.

<th class="form"><label>Platform / Model</label></th>
        <td> <select class="platform required" name="platform">
                <option ></option>
                <cfloop query="rsPlatform">
                    <option value="#rsPlatform.optionValue#" <cfif rsRequestSystems.platform eq rsPlatform.optionValue>selected</cfif>>#rsPlatform.optionValue# - #rsPlatform.optionDesc#</option>
                </cfloop>
            </select>
            &nbsp; / &nbsp;
            <select class="model required" name="model">
                <option selected></option>
                <cfloop query="rsModels">
                    <option value="#rsModels.optionValue#" <cfif rsRequestSystems.model eq rsModels.optionValue>selected</cfif>>#rsModels.optionDesc#</option>
                </cfloop></select></td>

Ответы [ 2 ]

0 голосов
/ 16 марта 2011

Я отвечаю на свой вопрос, так как нашел работу.

Я нашел эту ссылку , которая ссылается на livequery, который решил мою проблему.

$(".platform").livequery("change", function() {
    var firstOption = $(this);
    alert('Updating Modules 302');
    if (firstOption.closest('tr').find('.platform').val() == '')
        {
            firstOption.closest('tr').find('.model').html('<option value=""></option>');                
        }
    else
        {
            firstOption.closest('tr').find('.model').html('<option value="">Updating...</option>');
            alert('Updating Modules 310');
            $.getJSON("index.cfm?do=misc.getModels",{platform: $(this).val()},      
            function(j){
                var options = '';
                for (var i = 0; i < j.length; i++) 
                    {
                        options += '<option value="' + j[i].optionValue + '">' + j[i].optionDisplay + '</option>';
                    }
            firstOption.closest('tr').find('.model').html(options);
            });
        }
});
0 голосов
/ 16 марта 2011

Судя по комментариям после вопроса, кажется, вы сузили проблему до регистрации события, видя, что вообще ничего не происходит, даже не вызывается "оповещение".

Согласно следующему ответу на другие подобные вопросы SO, может показаться, что то, что вы пытаетесь сделать, т.е. использовать метод live () для события 'change', не работает в IE7 .

...