如果输入元素中至少有一个具有值,我需要启用一个按钮(在不久的将来可能还有其他元素)。我正在使用BootstrapValidator作为主要的验证库,因为我使用的是Twitter Bootstrap,但却没有想到,以简单的方式来实现这一点。我所知道的是逐个检查每个输入,例如:
if ($('.some_input').length > 0) { // then do actions }
但如果我有很多字段,这个解决方案似乎很乏味而且不太实用,我也需要触发一些事件,例如:keypress
,keyup
,{{1 }},keydown
也许其他人(根本不清楚)。
现在表格非常简单,如下图所示,我的解决方案应该有效,但表格会在不久的将来快速成长,所以我把它留在后面,我正在寻找另一种解决方案。
这里的按钮“Buscar”(它是在img上启用但不关心这个我错过了我在屏幕截图时被禁用)只有在表格上的任何输入时才应启用(Codigo de la Norma, AñodePublicacion,Palabra o Termino que contiene la Norma)具有值,并且可能在下面的选择中标记的选项具有与默认值不同的值(可以是例如 - 任何一个 - 值= 0)简单的单词:任何输入至少有3个字符的最小值,SELECT中的选择应该与默认值不同,我该怎么做?
答案 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>
<强>更新强>
要展开此内容以使其适用于其他表单元素(radios
和checks
除外),您可以将: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' />