![](/img/trans.png)
[英]Toggle button enabled/disabled if at least one input has values or if a select changes the default value
[英]Enable button (or any element) if at least one input has value
如果输入元素中至少有一个具有值,则需要启用一个按钮(可能在不久的将来启用表单上的其他元素)。 我使用BootstrapValidator作为主要的验证库,因为我使用的是Twitter Bootstrap,但不知道以简单的方式实现这一目标。 我知道的是例如逐个检查每个输入:
if ($('.some_input').length > 0) { // then do actions }
但是,如果我有很多领域,那么该解决方案似乎很乏味且不太实用,那么我还需要触发许多事件,例如: keypress
, keyup
, keydown
, blur
以及其他一些事件(根本不清楚)。
现在,该表单非常简单,如下图所示,我的解决方案应该可以使用,但是该表单会在不久的将来快速增长,因此我将其抛在后面,正在寻找其他解决方案。
在此,只有在表单上有任何输入(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>
更新资料
要扩展它,使其与其他表单元素(不包括radios
和checks
)一起使用,可以将: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.