2014-10-16 47 views
0

如果至少有一个输入元素具有值,则需要启用按钮(以及可能在不久的将来表单上的其他元素)。我使用BootstrapValidator作为主要验证库,因为我使用的是Twitter Bootstrap,但没有想法,以简单的方式实现此目的。我所知道的是一个,例如检查每个输入一个:如果至少有一个输入有值,则启用按钮(或任何元素)

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

但是,如果我有很多领域的解决方案,这似乎是乏味和并不很实用,我也需要一些很多事件触发例如:keypress,keyup,​​,blur或许也有其他人(根本不清楚)。

现在的形式非常简单,如下图所示,我的解决方案应该可以工作,但形式会快速成长并在不久的将来,所以我把它留下,我正在寻找另一种解决方案。

2014-10-16_11-16-24

这里按钮“Buscar”(它的IMG启用,但不关心这个,我错过残疾人当我拿着screenshoot)应启用只有当任何形式的输入(Codigo de la Norma,Añode Publicacion,Palabra o Termino que contiene la Norma)具有值并且可能在下面选择标记的选项具有与默认值不同的值(可以是任何例如 - 选择一个值= 0)用一个简单的话来说:任何输入至少有3个字符最小值,SELECT中的选择应该与默认值不同,我该怎么做?

+0

而不是使用关键事件的使用jQuery的'$( 'commonclass。 ')上(' 变',函数(){处理这里});' – makhan 2014-10-16 19:31:26

回答

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); 
    }); 
}); 
+0

这几乎工作,但缺少SELECT行为,以检查SELECT是否已从默认值更改为任何其他选项,我可以使用与上述文章中提到的相同的“change”事件,但如何适合您的解决方案? – ReynierPM 2014-10-16 19:40:47

+0

只要将':text'改成':input',那就应该这样做! – PeterKA 2014-10-16 19:41:52

+0

不,我改变了,它不起作用 – ReynierPM 2014-10-16 19:43:57

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' />

相关问题