如果至少一个输入具有值,则启用按钮(或任何元素)

时间:2014-10-16 19:26:17

标签: javascript jquery html twitter-bootstrap

如果输入元素中至少有一个具有值,我需要启用一个按钮(在不久的将来可能还有其他元素)。我正在使用BootstrapValidator作为主要的验证库,因为我使用的是Twitter Bootstrap,但却没有想到,以简单的方式来实现这一点。我所知道的是逐个检查每个输入,例如:

if ($('.some_input').length > 0) { // then do actions }

但如果我有很多字段,这个解决方案似乎很乏味而且不太实用,我也需要触发一些事件,例如:keypresskeyup,{{1 }},keydown也许其他人(根本不清楚)。

现在表格非常简单,如下图所示,我的解决方案应该有效,但表格会在不久的将来快速成长,所以我把它留在后面,我正在寻找另一种解决方案。

2014-10-16_11-16-24

这里的按钮“Buscar”(它是在img上启用但不关心这个我错过了我在屏幕截图时被禁用)只有在表格上的任何输入时才应启用(Codigo de la Norma, AñodePublicacion,Palabra o Termino que contiene la Norma)具有值,并且可能在下面的选择中标记的选项具有与默认值不同的值(可以是例如 - 任何一个 - 值= 0)简单的单词:任何输入至少有3个字符的最小值,SELECT中的选择应该与默认值不同,我该怎么做?

2 个答案:

答案 0 :(得分:2)

    $(function() {
            $(':text').on('input', function() {
                if( $(':text').filter(function() { return !!this.value; }).length > 0 ) {
                     $('button').prop('disabled', false);
                } else {
                     $('button').prop('disabled', true);
                }
            });
    });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<form>
First name: <input type="text" name="firstname"><br>
Last name: <input type="text" name="lastname"><br>
    <button disabled="disabled">Submit</button>
</form>

<强>更新

要展开此内容以使其适用于其他表单元素(radioschecks除外),您可以将:text更改为:input。代码可以缩短为以下内容:

$(function() {
    $(':input').on('input', function() {
        var completed = $(':input').filter(function() { return !!this.value; }).length > 0;
        $('button').prop('disabled', !completed);
    });
});

答案 1 :(得分:1)

每个input元素都附加了一个名为change的事件。我会在完成后添加一个函数来运行。

如果确实想要在字段中添加一个字母时运行代码,您可以改为使用称为input的事件(请务必检查所有代码的性能)像这样,因为它会被触发很多!)

虽然input事件的浏览器支持少于change事件。

$('input.some_input').on('change', function() {
  if ($(this).val().length > 0) { 
    alert('woot! text!');
  }  
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input class='some_input' value='test' />