jquery
  • events
  • onchange
  • 2013-02-26 83 views 0 likes 
    0

    我在做什麼是簡單,所以我可能做錯了。觸發的變化()事件來刷新選擇框使現場改變事件重新觸發

    我有一個簡單的選擇框爲表的一個過濾器。我有一個按鈕來重置過濾器。

    $("#package").live('change', function() 
    { 
        filterPackage = $("#package").val(); 
    
        $.ajax({url: 'ajaxAllGroups.php?filterPackage='+filterPackage, cache: false, success: function(main) 
        { 
         $('#fullPartsList').html(main); 
        }}); 
    }); 
    
    function unfilter() 
    { 
        $.ajax({url: 'ajaxAllGroups.php?filterPackage=0', cache: false, success: function(main) 
        { 
         $('#fullPartsList').html(main); // Send ajax content to table 
    
         $('#package').val(0); // Reset option to default 
         $("#package").change(); // Force visual change to select box 
        }}); 
    } 
    

    正如你所看到的復位按鈕設置選擇選項,回零和我觸發的變化()函數的選擇對視覺進行更改應用到選擇框。

    的所有作品,但僅可視變化觸發實時切換功能上面這會導致不必要的第二Ajax調用。

    我想到了真/假變量這樣做是爲了使其運行一次,但無法得到的變量設置真/假在正確的時間,但我相信有一個更簡單的方法。

    在此先感謝。

    +0

    不會在$(「#包」)VAL(0)。觸發更改事件? – benzonico 2013-02-26 13:15:43

    +0

    @benzonico它應該,不應該嗎?然後手動觸發不必要 – Vogel612 2013-02-26 13:17:28

    +0

    @benzonico - 我希望它在這種情況下做,我不能想,我想它,否則的情況下,但它沒有,我可以看到,爲什麼從靈活性的角度來看。 – 2013-02-26 14:30:12

    回答

    2

    爲什麼不能在現場操作處理程序添加一個簡單的檢查,以排除值調用0

    if(filterPackage!=0) 
    { 
        $.ajax({url: 'ajaxAllGroups.php?filterPackage='+filterPackage, cache: false, success: function(main) 
        { 
         $('#fullPartsList').html(main); 
        }}); 
    } 
    
    +0

    你的答案都很棒。這比我想象的要簡單,我很遺憾沒有想到這一點。我很想給出答案adeneo,因爲它確實簡化了整個事情,並且可能更適用於廣泛的場景,但是你是第一個,並且可能更喜歡rep更多:)謝謝。 – 2013-02-26 14:34:49

    +0

    謝謝詹姆斯皮特。 – ZKK 2013-02-26 14:41:44

    +0

    雖然這是一個很好的解決方案,我發現在我的選項被標記(0)輕微瑕疵「所有」,而不是「選擇一個」,所以我不能用不過濾選擇「所有」與下拉,只與「Unfilter」按鈕。我很喜歡這個方法,但對於那些處於我的位置的人來說,它可能並不完美。 – 2013-03-26 14:50:13

    1
    $(document).on('change', '#package', function() { 
        doFilter(this.value); 
    }); 
    
    function doFilter(pkg) { 
        $.ajax({ 
         url : 'ajaxAllGroups.php', 
         data: {filterPackage: pkg} 
        }).done(function(main) { 
         $('#fullPartsList').html(main); 
        }); 
    } 
    
    function unfilter() { 
        $('#package').val(0); 
        doFilter(0); 
    } 
    
    +0

    謝謝adeneo - 請參閱上面的回答評論。我認爲這樣更合適,我會使我的功能適應這種方法,並嘗試在未來的編碼中更多地考慮這一點。希望我可以給這個答案標記:) – 2013-02-26 14:37:01

    +0

    @JamesPitt - 沒問題!很高興幫助! – adeneo 2013-02-26 14:45:43

    相關問題