jquery attr()无法在移动设备上运行 - Android - Chrome

时间:2013-12-31 09:53:52

标签: jquery html html5 mobile

如果输入类型文本为空或者没有,我正在尝试启用/ 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上发生。这看起来很奇怪,对此有什么解决方法吗?

2 个答案:

答案 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);
    }
});