2012-02-01 63 views
0

我們有一個簡單的textarea和一個按鈕。如何獲取jQuery「on-select-off」事件

<input type="button" id ="foo" disabled> 
<textarea rows="12" name="message" id="message" cols="50"></textarea> 

我需要:

  1. 刪除屬性禁用從按鈕時,在textarea的一些文本選擇
  2. 集屬性禁用時選擇取消

第一項任務是用此代碼實現:$('textarea').select(function() { $('#foo').attr('disabled','');});

但隨着第二項任務,我沒有任何想法。

回答

0

嘗試使用下面的代碼
$(document).ready(function() { $('textarea').select(function() {$('#foo').attr('disabled',false)}); $('textarea').mousedown(function() { $('#foo').attr('disabled',true);}); });
你可以嘗試使用焦點事件嗎? 似乎這個事件一旦關注你的DOM元素就會被觸發。 回答是NO。你可以使用鼠標。

+0

按鈕應該啓用。焦點活動和onMouseUp不是正確的選擇。 – 2012-02-01 09:14:29

+0

我使用mousedown event.Otherwise,我們也可以使用像下面的焦點事件回答:http://stackoverflow.com/questions/275761/how-to-get-selected-text-from-textbox-control-with-javascript – 2012-02-01 09:38:37

+0

隨着與手鼓的一些舞蹈,它的工作方式是正確的。我認爲jQuery中有真實的事件。或者至少選擇使用兩個函數的可能性,如$('textarea')。select(fn1 {text selected},fn2 {text unselected}); – 2012-02-02 07:34:16

1

試試這個

<script> 
    $(document).ready(function() { 
     $("#controlId").attr('disabled','disabled'); //disable the control 

     $("#controlId").removeAttr('disabled');//remove disabled 
    }); 
</script> 

不要做$("#Div").attr('disabled','true');,這裏的主要問題是,用1.6(或某事物周圍)與== true比較壞了,如果屬性值是disabled(見http://jsfiddle.net/2vene/1/(並切換jquery版本))。你應該去is()。您可以檢查jQuery FAQ

+1

或'.prop('disabled',true)' – devnull69 2012-02-01 08:32:54

+0

感謝您的「禁用」信息,但主要問題是如何禁用「某些文本的選擇被取消時」。 – 2012-02-01 08:42:31

+0

在取消事件你做'$(「#controlId」)。removeAttr('disabled');' – 2012-02-01 08:49:48

0

您可以使用此功能得到選定的文本,

function getSelectedText() { 
     var text = ""; 
     if (window.getSelection) { 
      text = "" + window.getSelection(); 
     } else if (document.selection && document.selection.createRange && 
       document.selection.type == "Text") { 
      text = document.selection.createRange().text; 
     } 
     return text; 
    } 

而且在鼠標擡起事件中添加喜歡這個新功能,只有當在textarea的一些文本選擇

function Disable() { 
    if(getSelectedText()=='') 
    { 
     $('#foo').removeAttr('disabled'); 
    } 
} 

$('textarea').mouseup(Disable); 
+0

它是指在頁面上選擇任何文本還是隻爲這個文本區域? – 2012-02-01 08:51:57

+0

是的,我認爲。我沒有測試過。有一種方法可以從文本框中獲取選定的文本。 – 2012-02-01 08:58:38

+0

這是,http://stackoverflow.com/questions/275761/how-to-get-selected-text-from-textbox-control-with-javascript – 2012-02-01 08:59:34

相關問題