2015-11-04 70 views
0

我有兩個按鈕:查詢和導出。導出按鈕在默認情況下是禁用的,但是當查詢按鈕被單擊並且表單已經加載時,我希望啓用導出按鈕。單擊另一個按鈕並提交表單後啓用按鈕

現在,當我點擊查詢導出啓用了一秒,然後又回到被禁用。我假設在提交表單時它有一些事情要做,並將導出按鈕恢復爲原始狀態。

<button type="submit" class="btn btn-primary btn-small" id="query">Query</button> 
<button class="btn btn-primary btn-small" id="export-button" disabled="disabled">Export</button> 

這是我的jQuery目前的樣子。

$(".form").on("submit", function() { 
    $('#export-button').prop('disabled', false); 
}) 
+0

_「我認爲當表單提交時它有一些事情要做,它將導出按鈕恢復爲原始狀態。」_正確。除非您攔截提交事件,否則頁面將加載新頁面(或同一頁面),並且更改將丟失。 – j08691

+0

@ j08691有沒有辦法以某種方式存儲更改,以便在頁面重新加載之後,它將啓用按鈕? – mCat

+0

你需要存儲它在某個地方被點擊的事實,比如在一個cookie,session,URL,localStorage,數據庫等等。 – j08691

回答

-1

jQuery的1.6+ https://api.jquery.com/removeProp/
的jQuery 1.5 https://api.jquery.com/removeAttr/

如果你有jQuery的1.6+,嘗試

$('#export-button').removeProp('disabled'); 

如果你有的jQuery 1.5或下面試着ü SE:

$('#export-button').removeAttr('disabled'); 

,並確保在窗體中有.form

+0

OP的jQuery工作正常。只是該頁面正在重新加載,並且該按鈕又回到被禁用狀態。 – j08691

+0

感謝您的快速回復!無論如何,我試過,我仍然得到相同的結果 - 導出按鈕啓用一秒,然後再次禁用。 – mCat

-1

可以實現這種方式。假設你正在使用默認的get方法的表單標籤。

<form> 
    <button type="submit" name="submit" class="btn btn-primary btn-small" id="query">Query</button> 
    <?php 
    if(empty($_GET)) 
     $str = 'disabled="disabled"'; 
    else 
     $str =""; 
    ?> 
    <button class="btn btn-primary btn-small" id="export-button" <?php echo $str; ?>>Export</button> 
    </form> 
+1

我不允許爲此使用php。我需要保持它與其他代碼一致。 – mCat

0

我知道我張貼這一段時間回來,但如果有人在這兒也有類似的問題,我就是這樣做來解決這個問題:

首先,我建立了我的表單內隱藏輸入要記住按鈕是否已經被點擊或不

<input type="hidden" name="clicked" value="true" /> 

在這個函數,它要麼在會話存儲檢查按鈕被點擊或將其保存到會話存儲。

$(function() { 
    $(document).ready(function() { 
    var clicked = sessionStorage.getItem('clicked'); 
     if (clicked == 'true') { 
      $('#exportButton').removeAttr('disabled'); 
     } else { 
      $('#exportButton').attr('disabled', 'disabled'); 
     } 
    }); 
    $('#query').on("click", function() { 
     sessionStorage.setItem('clicked', 'true'); 
    }); 
    $('#reset').on("click", function() { 
     sessionStorage.setItem('clicked', 'false'); 
    }); 
});