2016-08-24 77 views
1

我很難用chained selects觸發我打算髮生.a改變的ajax調用。問題是,當鏈接選擇填充第二個選擇(我打算用來調用ajax的那個)時,它會過早地觸發ajax調用。我需要Ajax .on來觸發第二個.on而不是第一個

是否可以跳過第一個.on,然後從第二個.change繼續燒製?

鏈式選擇功能:

$(function() {  
      $("#products").remoteChained({ 
       parents: "#instrument", 
       url: "/ajax/instrument", 
       loading: "loading", 

      });  
    }); 

我的Ajax功能:

$('#products').on('change', function(event) { 
    event.preventDefault(); 
    var href = $(this).find('option:selected').attr('value'); 
    console.log('href ' + href); 
    location.hash = href; 
    $('#sort').hide(); 
    $('#sort').css({ display: 'block' }).animate({ height: '100%' 
    }, function() { 

     $('#sort').fadeIn('slow').html('<div class="clearfix loading"> LOADING </div>'); 
     $('#loader').css({ border: 'none', position: 'relative', top: '24px', left: '48px', boxShadow: 'none' 
     }); 
    // http://loadinfo.net/ 
     $.ajax({ 
      url: "/ajax/ajax_sort/" + href, 
      dataType: "html", 
      success: function(data) { 
       $("#sort").html(data); 
      $('.c3 .card').equalHeights(); 
       $('.product-count').fadeOut('slow'); 
       $('#ajax-hidden').hide().fadeOut('slow'); 
      } 
     }); 
    }); 
+0

你能不能做一個有條件的ajax調用,因爲你明確希望讓用戶更改值? 'if(href!=='your default')$ ajax ...' –

+1

從[github]下載(https://github.com/tuupola/jquery_chained/blob/master/jquery.chained.remote.js)和刪除'.trigger('change')'事件。 – BenG

+0

如果有辦法投票,我會的。這就像一個魅力。我不必刪除.trigger,我只是將它們更改爲.on,它的功能就像一個魅力。非常感謝! –

回答

2

最簡單的方法是使用一個布爾變量來檢查

var shouldRun = false; 
$('#products').on('change', function(event) { 
if(!shouldRun) 
{ 
    shouldRun = true; 
    return; 
} 
//Your code 
} 
+0

這工作,謝謝!唯一的問題是,當用戶返回第一個選擇,並更改另一個選項時,會發生同樣的情況。也許我需要在第一次選擇時參考.off –

+0

_唯一的問題是,這正是我看到這個答案時的想法。 – BenG

相關問題