2012-03-18 85 views
0

我用VS2010,C#的ASP.NET開發,我寫了一個小型的JavaScript功能,使最初被禁用按鈕用戶輸入在文本框中(短語這個文本框後,纔不應該是空的),它工作正常,但有一個小問題,當用戶鍵入單詞時,按鍵沒有被啓用,他應該按下標籤或點擊屏幕以便按鈕被啓用!這裏是我的JS功能:JavaScript不立即啓用我的按鈕

 <script type="text/javascript" > 
     function onWeightChange() { 
      document.getElementById('btnFinish').disabled = true; 
      document.getElementById('btnConfirmQuestion').disabled = true; 
      if (document.getElementById('txtWeight').value != "") { 
       document.getElementById('btnFinish').disabled = false; 
       document.getElementById('btnConfirmQuestion').disabled = false; 
      } 
     } 
</script> 

,我打電話給我的JS代碼隱藏中以下列方式:

  txtWeight.Attributes.Add("onchange", "return onWeightChange();"); 

什麼錯誤嗎?我想獲得使我的按鈕文本在文本框中輸入之後,並且不應該有任何需要從文本框更改焦點

感謝

+1

使用'onkeypress'而不是'onchange'。 – 2012-03-18 11:59:58

+0

謝謝我測試它 – 2012-03-18 12:13:12

回答

2

onchange火災,當用戶離開元素,它不火的時候,元素有焦點。

您需要使用鍵盤事件,或者onkeypressonkeyuponchange事件的組合。您需要onchange事件,因爲可以在不按下按鍵的情況下更改控件的值!

+0

你是對的,使用可能會粘貼一個值! – 2012-03-18 12:13:54

0

onchange()事件只會在用戶離開輸入框時觸發。你想使用事件<input type="text" id="txtWeight" onkeyup="onWeightChange(this)" />

<script type="text/javascript" >   
    function onWeightChange(el) {        
     document.getElementById('btnFinish').disabled = e.value.length;      
     document.getElementById('btnConfirmQuestion').disabled = el.value.length;  
    } 
</script> 
+1

使用文件菜單將文本粘貼到文本框中,現在您的代碼是否工作? – epascarello 2012-03-18 12:17:58

+1

嗯...好問題。不確定鍵控是否適用於控制鍵。讓我看看並找回你。 – 2012-03-18 12:23:47

+1

是的,onkeyup事件是用ctrl-v觸發的,但是,它仍然可以通過鼠標右鍵單擊進行更改,粘貼。在這些情況下,您可以保留onchange事件或添加onpaste事件。 – 2012-03-18 12:31:00

1

你應該嘗試的onkeyup方法,因爲平變化,只有當你的文本框失去焦點,並在這種情況下是粘貼的東西進入你的TextBox火你應該嘗試onpaste方法這個組合應該工作精細。

txtWeight.Attributes.Add("onkeyup", "return onWeightChange();"); 
txtWeight.Attributes.Add("onpaste", "return onWeightChange();");