如果输入类型文本为空或者没有,我正在尝试启用/ dsabled输入。这是我的jQuery代码:
$(document).on('keyup', '#searchString', function(){
searchString = $('#searchString');
if(searchString.val().length > 0){
$('#cmdSearch').attr('disabled', false);
}
else{
$('#cmdSearch').attr('disabled', true);
}
});
这是相关的HTML节点:
<div class="form-wrapper">
<form method="post" class="res-form" role="form">
<input type="text" name="searchString" id="searchString" autocomplete="off" aria-autocomplete="none" class="form-control input-lg" placeholder="busca artículos, screencasts o demos">
<div style="height: 15px;"></div>
<button type="submit" name="cmdSearch" disabled="true" id="cmdSearch" class="btn btn-block btn-lg btn-success">Buscar</button>
</form>
</div>
它可以在桌面上运行,但它不适用于移动设备。有什么想法吗?
修改
我找到了一些有趣的东西,它确实有效,问题是,一旦我从输入中删除了所有文本,我们就说输入有.val()
"foo"
并删除{ {1}},我仍然需要再次按"foo"
以便脚本采取行动,这在Android上的Chrome上发生。这看起来很奇怪,对此有什么解决方法吗?
答案 0 :(得分:1)
对于布尔值,您最好使用prop()而不是attr()
$(document).on('keyup', '#searchString', function(){
searchString = $('#searchString');
if(searchString.val().length > 0){
$('#cmdSearch').prop('disabled', false);
}
else{
$('#cmdSearch').prop('disabled', true);
}
});
答案 1 :(得分:0)
正如您提到的新更新,我认为您必须使用$.trim()
方法从if条件中删除该元素的任何空格:
$(document).on('keyup', '#searchString', function(){
var searchString = $.trim($(this).val()); //<------make a local var instead
if(searchString > 0){
$('#cmdSearch').prop('disabled', false);
} else {
$('#cmdSearch').prop('disabled', true);
}
});