2012-11-23 86 views
0

我有一個LinkBut​​ton,顯示當它按下一個確認窗口函數:如何啓用禁用了LinkBut​​ton風格和事件與jQuery

$('#LinkButton1').click(function() { 
    var continue = confirm('¿CONTINUE?'); 
    if (continue) { 
     return true; 
    } 
    else 
     return false; 
}); 

我想禁用一個LinkBut​​ton,其風格和CLIC事件,當頁面負載:

$('#LinkButton1').attr("disabled", "disabled").on('click', function (e) { 
    e.preventDefault() 
}); 

LinkBut​​ton的是殘疾人和onclic服務器事件被刪除,但該提示它仍然顯示。

當用戶鍵入的東西到一個文本框這個linbutton應該被再次啓用,並獲得以前unbinded CLIC事件:

$(':input').keypress(function() { 
    $('#LinkButton1').removeProp('disabled').off('click'); 
}); 

這回來的服務器onclic事件,但我現在我錯過了確認窗口。

DEMO:http://jsfiddle.net/Tvbg9/3/ 在這個演示的確認窗口不顯示,但我在頁面上仍然可以看到。

我做錯了什麼? 謝謝。

回答

0

我只允許CLIC事件,如果按下任意鍵到任何文本框:

$('#LinkButton1').attr("disabled", "disabled").on('click', function (e) { 
    e.preventDefault(); 
    return false; 
}); 

$(':input').keypress(function() { 
    $('#LinkButton1') 
    .removeProp('disabled') 
    .off('click') 
    .click(function() { 
     var continue = confirm('¿CONTINUE?'); 
     if (continue) { 
      return true; 
     } 
     else 
      return false; 
    }); 
}); 

0

不使用該

 $('#LinkButton1').attr("disabled","") 

的你可以試試這個

$('#LinkButton1').removeAttr("disabled") 

希望它應該工作

+1

你應該使用removeProp('禁用'),而不是 –

+0

@roasted這工作! – anmarti

+0

@Roasted:不,你*不應該*(['removeProp()'](http://api.jquery.com/removeProp/)*的文檔顯式*警告這個*除非*你想*永久*刪除屬性假設它可以再次變成'禁用',你應該簡單地使用'.prop('disabled',false)'來取消設置'disabled'屬性 –

0

嘗試禁用按鈕

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

然後以下輸入:

$('input').change(function() { 
    if ($(this).val().length > 0) 
     $('#LinkButton1').unbind('click'); 
});​ 

希望這會有所幫助!

+0

當輸入發生變化時,我需要再次綁定click事件,而不是解除綁定 – anmarti

0

這是要走的路:

http://jsfiddle.net/Tvbg9/

$('#LinkButton1').on('click',function(e){e.preventDefault()}); 

    $(':input').keypress(function() { 
     $('#LinkButton1').off('click'); 
    });​ 
+0

我編輯了你的小提琴,因爲我還需要刪除確認窗口,而且當再次點擊時,我錯過了確認窗口 http:// jsfiddle達網絡/ Tvbg9/3 / – anmarti