2012-03-18 8 views
0

私はVS2010、C#をASP.NET開発に使用していますが、ユーザーがテキストボックスにフレーズを入力した後に初めて無効化されたボタンを有効にする小さなJavascript関数を作成しました空ではないはずです)、うまくいきますが、小さな問題があります。ユーザーが単語を入力するとボタンが正確に有効にならず、タブを押すか、画面上をクリックしてボタンを有効にする必要があります。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を呼び出します:ここに私のJS関数である

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

が間違ってここで何が起こっていますか?私は私のボタンが有効になって取得したいユーザーが要素から離れたときにテキストが感謝

+1

は、 'onchange'ではなく' onkeypress'を使用します。 –

+0

ありがとう私はそれをテストします –

答えて

2

onchange火災テキストボックスに入力され、テキストボックス

からフォーカスを変更する必要があってはならない直後、それは時に発生しません。要素にフォーカスがあります。

onkeypressまたはonkeyupのいずれかのキーイベントをonchangeイベントと組み合わせて使用​​する必要があります。キーを押さずにコントロールの値を変更することができるので、onchangeイベントが必要です。

+0

あなたは正しいです、値を貼り付けるかもしれません! –

1

バインドする必要がある正しいイベントは、http://www.w3schools.com/jsref/event_onkeydown.aspに示すようなkeydownイベントか、必要な動作によってはおそらくキーアップだと思います。

+0

http://w3fools.com/ – epascarello

+0

私はそれを知らなかった、ありがとう。私は、w3schoolsのリンクは、キーイベントの詳細を効果的に正しく示していると思います。 – Spike

0

onchange()イベントは、ユーザーが入力ボックスを離れると発生します。あなたは、あなたのテキストボックスにフォーカスし、ケースには、誰かがあなたがテキストボックスに何かを貼り付けていること失うのonchangeのみ火災があなたのonpaste方法を試してみてください。この組み合わせは動作するはずですので、あなたはonkeyupの方法を試してみてください<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

+1

ねえ...良い質問です。キーアップがコントロールキーに適用されるかどうかは不明です。私はそれをチェックして、あなたに戻ってみましょう。 –

+1

はい、onkeyupイベントはctrl-vで発生しますが、マウスを右クリックして貼り付けても変更できます。そのような場合、onchangeイベントを保持したり、onpasteイベントをミックスに追加したりすることができます。 –

1

イベントに使用したいです良い。

txtWeight.Attributes.Add("onkeyup", "return onWeightChange();"); 
txtWeight.Attributes.Add("onpaste", "return onWeightChange();"); 
関連する問題