将更改事件处理程序附加到您的输入
你只是最初隐藏你的下一个元素。您还应该重新检查输入值的每次更改。试试这个:
$(function(){
// bind a change event handler
$('#myDiv').change(function(){
this.value.length && $('#next_btn').show() || $('#next_btn').hide();
}).change(); // set initial state
});
我没有使用if
语句,因为您在每种情况下都在做简单的一句话。我宁愿用布尔表达式替换它。Javascript 引擎的布尔执行将确保只执行一个 jQuery 选择器,因此也不需要缓存下一个按钮元素。
您当然可以用这样的方式替换该单行if
:
if (this.value.length)
{
$('#next_btn').show();
}
else
{
$('#next_btn').hide();
}
不要忘记初始化状态
附加更改事件并不是一切。您还需要在页面加载(或准备就绪)时设置初始状态。我的代码通过最后一次调用.change()
. 这意味着它首先注册处理程序,然后也调用它。
超级简化的解决方案:使用toggle
布尔参数
整个事情可以用这个代替:
$(function(){
// bind a change event handler
$('#myDiv').change(function(){
$('#next_btn').toggle(!!this.value.length);
}).change(); // set initial state
});
更改事件可以吗?
更改事件可能不满足您的要求,因为它在字段失去焦点后触发。也许您应该改用keypress
orkeyup
事件。但解决方案保持不变。只需替换事件处理程序绑定。