繁体   English   中英

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

[英]Enable button (or any element) if at least one input has value

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

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

但是,如果我有很多领域,那么该解决方案似乎很乏味且不太实用,那么我还需要触发许多事件,例如: keypresskeyupkeydownblur以及其他一些事件(根本不清楚)。

现在,该表单非常简单,如下图所示,我的解决方案应该可以使用,但是该表单会在不久的将来快速增长,因此我将其抛在后面,正在寻找其他解决方案。

2014-10-16_11-16-24

在此,只有在表单上有任何输入(Codigo de la Norma,Añode Publicacion)时,才应启用按钮“ Buscar”(已在img上启用,但并不关心我在拍摄屏幕快照时会错过的功能) ,Parabra o Termino que contiene la Norma)具有值,并且可能在下面的选择中标记的选择具有与默认值不同的值(可以是任何值,例如–Pick one–值为= 0),简单来说就是:任何输入至少要包含3个字符,并且SELECT中的选择应与默认输入不同,我该怎么做?

  $(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);
    });
});

每个input元素都具有一个称为change的事件。 每当完成此操作后,我都会添加一个要运行的函数。

如果您真的想在一个字段中甚至添加一个字母时都运行代码,则可以改用称为input的事件(但是请务必检查像这样的任何代码的性能,因为它将被大量触发!)

虽然,与change事件相比,浏览器对input事件的支持要少得多。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM