javascript没有立即启用我的按钮

时间:2012-03-18 11:56:27

标签: javascript asp.net

我使用VS2010,C#进行ASP.NET开发,我编写了一个小的Javascript函数,只有在用户在文本框中输入一个短语后才启用最初禁用的按钮(此文本框不应为空),它可以正常工作很好,但是有一个小问题,当用户输入单词时,按钮没有准确启用,他应该按Tab键或点击屏幕以便按钮启用!这是我的JS功能:

       <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();");

这里出了什么问题?我想在文本框中输入文本后立即启用我的按钮,并且不需要从文本框更改焦点

感谢

4 个答案:

答案 0 :(得分:3)

当用户离开元素时,

onchange会触发,当元素具有焦点时,它不会触发。

您需要结合onkeypress事件使用关键事件onkeyuponchange。您需要onchange事件,因为可以在不按键的情况下更改控件的值!

答案 1 :(得分:1)

我认为您需要绑定的正确事件是http://www.w3schools.com/jsref/event_onkeydown.asp所示的keydown事件,或者可能是keyup,具体取决于您需要的行为。

答案 2 :(得分:1)

你应该尝试使用onkeyup方法,因为onchange只会在文本框失去焦点时触发,如果有人在你的文本框中粘贴了某些内容,你应该尝试onpaste方法,这个组合应该可以正常工作。

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

答案 3 :(得分: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>