我使用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();");
这里出了什么问题?我想在文本框中输入文本后立即启用我的按钮,并且不需要从文本框更改焦点
感谢
答案 0 :(得分:3)
onchange
会触发,当元素具有焦点时,它不会触发。
您需要结合onkeypress
事件使用关键事件onkeyup
或onchange
。您需要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>