很抱歉,这可能是重复的Q,但无法轻松找到直接的解决方案,
我已经通过SO答案找到了,如果所有值都已填充,请启用$(document).ready(function() {
$('.field input').keyup(function() {
var empty = false;
$('.field input').each(function() {
if ($(this).val().length == 0) {
empty = true;
}
});
if (empty) {
$('.actions input').attr('disabled', 'disabled');
} else {
$('.actions input').attr('disabled', false);
}
});
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class='form'>
<form>
<div class='field'>
<label for="username">Username</label>
<input id="username" type="text" />
</div>
<div class='field'>
<label for="password">Password</label>
<input id="password" type="password" />
</div>
<div class='actions'>
<input type="submit" value="Login" disabled="disabled" />
</div>
</form>
</div>
from keras.preprocessing.image import ImageDataGenerator
train_datagen = ImageDataGenerator(rescale = 1./255, shear_range = 0.2, zoom_range = 0.2, horizontal_flip = True)
test_datagen = ImageDataGenerator(rescale = 1./255)
training_set = train_datagen.flow_from_directory('D:\\Datasets\\gender CK+\\training_set',
target_size = (64, 64), batch_size = 32, class_mode = 'categorical')
test_set = test_datagen.flow_from_directory('D:\\Datasets\\gender CK+\\test_set',
target_size = (64, 64), batch_size = 32, class_mode = 'categorical')
seq = Sequential()
seq.add(ConvLSTM2D(filters=32, kernel_size=(3, 3),input_shape=(None, 64, 64, 40),
padding='same', return_sequences=True))seq.add(Batch Normalization())
seq.add(Dense(2,activation="sigmoid"))
seq.compile(loss='binary_crossentropy', optimizer='rmsprop',metrics=['accuracy'])
seq.summary()
seq.fit_generator(training_set, steps_per_epoch = 100, epochs = 4, validation_data = test_set, validation_steps = 200)
但是如果至少一个字段为非空,如何实现相同的(启用提交)
答案 0 :(得分:4)
您可以尝试以下方法:
$(document).ready(function() {
$('.field input').keyup(function() {
var hasValue = $('#username,#password').filter((index, input) => input.value.length > 0).length;
$('.actions input').attr('disabled', hasValue ? false : 'disabled');
});
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class='form'>
<form>
<div class='field'>
<label for="username">Username</label>
<input id="username" type="text" />
</div>
<div class='field'>
<label for="password">Password</label>
<input id="password" type="password" />
</div>
<div class='actions'>
<input type="submit" value="Login" disabled="disabled" />
</div>
</form>
</div>
更新:
$('#username,#password').filter((index, input) => input.value.length > 0).length
此行意味着我们将检查2个输入元素username
和password
的值,如果所有输入元素都不具有任何值,则该按钮将被禁用。如果要在启用/禁用之前检查另一个输入元素,则可以添加:
$('#username,#password,#input_3,#input_4').filter(...).length
这样,当username
,password
,input_3
和input_4
元素没有任何值时,该按钮将被禁用。确保每个输入元素都有一个特定的ID。
更新2:
同时检查username
和password
有一些价值:
var hasValue = $('#username,#password').filter((index, input) => input.value.length > 0).length === 2
检查field
,field4
和field5
有一些价值:
var hasValue = $('#field,#field4,#field5').filter((index, input) => input.value.length > 0).length === 3
答案 1 :(得分:1)
您可以选择Jquery.map
和Array.find
Jquery.map().get()
获得所有带条件的输入值长度。Array.find
将找到输入中的任意一个作为字符串的有效长度prop('disabled', !filled)
$(document).ready(function() {
$('.field input').keyup(function() {
var res = $('.field input').map(function() {
return $(this).val().length != 0
}).get()
var filled = res.find(a=> a == true)
$('.actions input').prop('disabled', !filled);
});
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class='form'>
<form>
<div class='field'>
<label for="username">Username</label>
<input id="username" type="text" />
</div>
<div class='field'>
<label for="password">Password</label>
<input id="password" type="password" />
</div>
<div class='actions'>
<input type="submit" value="Login" disabled="disabled" />
</div>
</form>
</div>
使用选择选项更新
基于必填字段的按钮。只有在必填字段1和3都填写后才启用按钮
$(document).ready(function() {
$('.field input,.field select').on('keyup change',function() {
var res = $('.field input[required],.field select[required]').map(function() {
return $(this).val().trim().length != 0
}).get();
var filled = res.every(a => a == true)
$('.actions input').prop('disabled', !filled);
});
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class='form'>
<form>
<div class='field'>
<label for="username">Username *</label>
<input id="username" required type="text" />
</div>
<div class='field'>
<label for="password">Password</label>
<input id="password" type="password" />
</div>
<div class='field'>
<label for="password">email *</label>
<input id="password" required type="password" />
</div>
<div class='field'>
<label for="password">select email *</label>
<select required>
<option value="">Select</option>
<option value="1">one</option>
<option value="2">two</option>
</select>
</div>
<div class='actions'>
<input type="submit" value="Login" disabled="disabled" />
</div>
</form>
</div>
答案 2 :(得分:1)
使用jQuery props方法。
$(document).ready(function() {
$(':input[type="submit"]').prop('disabled', true);
$('input').keyup(function() {
if($(this).val() != '') {
$(':input[type="submit"]').prop('disabled', false);
}else{
$(':input[type="submit"]').prop('disabled', true);
}
});
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class='form'>
<form>
<div class='field'>
<label for="username">Username</label>
<input id="username" type="text" />
</div>
<div class='field'>
<label for="password">Password</label>
<input id="password" type="password" />
</div>
<div class='actions'>
<input type="submit" value="Login" disabled="disabled" />
</div>
</form>
</div>
答案 3 :(得分:1)
另一种解决方法:
存储字段,并在每次按键时创建一个新的字段集合,并按其值过滤每个字段。
如果我们空白字段的长度与所有字段的长度相同,请禁用该按钮:
from itertools import permutations
perm = permutations([1,2,3,4,5,6,7,8,9,0,'q','w','e','r','t','y','u','i','o','p','a','s','d','f','g','h','j','k','l','z','x','c','v','b','n','m'], 3)
for i in list(perm):
print (i)
$(document).ready(function() {
var $fields = $('.field input');
$fields.keyup(function() {
var $emptyFields = $fields.filter(function(){
return !this.value;
});
$('.actions input').prop('disabled', $emptyFields.length === $fields.length);
});
});
文档:
答案 4 :(得分:0)
您可以通过一种简单的方法尝试此操作,如下所示:
var filled = false;
$('.field input').each(function() {
if ($(this).val().length > 0) {
filled = true;
return; // just add return means break from loop whenever any field is filled.
}
});
if (filled) {
$('.actions input').attr('disabled', false);
} else {
$('.actions input').attr('disabled', 'disabled');
}
});