Создание события onchange также запускается для загрузки страницы - PullRequest
2 голосов
/ 24 февраля 2010

У меня есть некоторые настройки событий onchange в jQuery, которые используются для заполнения выпадающего списка на основе того, что выбрано в другом выпадающем списке.

Мне нужно, чтобы они также запускались при загрузке страницы, чтобы результаты возвращались в зависимости от того, что находится в первом поле выбора при загрузке страницы (в противном случае я получаю пустое поле выбора).Я осмотрел интернет, но не могу найти ничего, что бы точно соответствовало тому, что я хочу сделать

Мой код Jquery:

        $(function(){


    //Get Contacts for Company

      $("select#ContactCompanyId").change(function(){
        var url = "contactList/" + $(this).val() + "";
        $.getJSON(url,{id: $(this).val(), ajax: 'true'}, function(j){
          var options = '';
          $.each(j, function(key, value){
        options += '<option value="' + key + '">' + value + '</option>';
          })
          $("select#QuoteContactId").html(options);
        })
      })

    //Get list of product Categories

      $("select#ProductCategory").live('change', function(){
        var url = "productList/" + $(this).val() + "";
        var id = $(this).attr('name');
        $.getJSON(url,{id: $(this).val(), ajax: 'true'}, function(j){
          var options = '';
        options += '<option value="0">None</option>';
          $.each(j, function(key, value){
        options += '<option value="' + key + '">' + value + '</option>';
          })
          $("select#QuoteItem" + id + "product_id").html(options);
        })
      })

    //Function to add product data into the form

      $(".Product").live('change', function(){
        var url = "productData/" + $(this).val() + "";
        var id = $(this).attr('title');
        $.getJSON(url,{id: $(this).val(), ajax: 'true'}, function(j){
        $("#QuoteItem" + id + "name").val(j['Product']['name']);
        $("#QuoteItem" + id + "price").val(j['Product']['price']);
        $("#QuoteItem" + id + "description").val(j['Product']['description']);
        })
      })
    })

Заранее благодарен за помощь

Ответы [ 2 ]

9 голосов
/ 24 февраля 2010

Вы можете просто вызвать событие сразу после связывания его с .trigger() следующим образом:

$("select#ContactCompanyId").change(function(){
    var url = "contactList/" + $(this).val() + "";
    $.getJSON(url,{id: $(this).val(), ajax: 'true'}, function(j){
      var options = '';
      $.each(j, function(key, value){
    options += '<option value="' + key + '">' + value + '</option>';
      })
      $("select#QuoteContactId").html(options);
    });
  }).trigger('change');
4 голосов
/ 24 февраля 2010
$(document).ready(function() {  
    $('#your_select_id').change();
});

Это вызывает событие изменения для вашего выбора с его текущим значением. Это эквивалент пользователя, выбирающего текущее значение, и он будет запускать любые присоединенные к нему события, которые будут запускаться из события onchange.

...