2009-05-24 94 views
1

這是我使用禁用按鈕正確禁用提交按鈕

  $("#btnSubmit").attr('disabled', 'disabled') 
      $("#btnSubmit").disabled = true; 

的代碼,這是我的提交按鈕

<input id="btnSubmit" class="grayButtonBlueText" type="submit" value="Submit" /> 

按鈕雖然看起來禁用,你仍然可以點擊它..這是測試與FF 3.0和IE6

我在這裏做錯了什麼?

回答

1

根據表單提交的處理方式,您可能還需要刪除任何點擊處理程序和/或添加一箇中止提交的點擊處理程序。

$('#btnSubmit').unbind('click').click(function() { return false; }); 

當(如果)重新啓用按鈕時,您必須再次添加點擊處理程序。

4

如果它是一個真實窗體,即沒有處理JavaScript事件,這應該工作。

如果您使用onClick事件處理按鈕,您會發現它可能仍會觸發。如果你這樣做,你會做得更好,只需要在JS中設置一個像buttonDisabled的變量,並在處理onClick事件時檢查該變量。

否則儘量

$(yourButton).attr("disabled", "true"); 

及後若所有這一切,你還在原地踏步,你可以手動「破發」使用jQuery(這是現在越來越嚴重)按鈕:

$(submitButton).click(function(ev) { 
    ev.stopPropagation(); 
    ev.preventDefault(); 
}); 

這應該停止按鈕的行爲。

0

您需要處理Back/Prev按鈕進入瀏覽器。 例波紋管

1)創建form.js:

(function($) { 
    $.enhanceFormsBehaviour = function() { 
     $('form').enhanceBehaviour(); 
    } 

    $.fn.enhanceBehaviour = function() { 
     return this.each(function() { 
      var submits = $(this).find(':submit'); 
      submits.click(function() { 
       var hidden = document.createElement('input'); 
       hidden.type = 'hidden'; 
       hidden.name = this.name; 
       hidden.value = this.value; 
       this.parentNode.insertBefore(hidden, this) 
      }); 
      $(this).submit(function() { 
       submits.attr("disabled", "disabled"); 
      });   
      $(window).unload(function() { 
       submits.removeAttr("disabled"); 
      }) 
     }); 
    } 
})(jQuery); 

2)添加到您的HTML:

<script type="text/javascript"> 
    $(document).ready(function(){ 
     $('#contact_frm).enhanceBehaviour(); 
    }); 
</script> 

<form id="contact_frm" method="post" action="/contact"> 
    <input type="submit" value="Send" name="doSend" /> 
</form> 

完成:)