我有一个条件,如果两个字段不为空,它将显示按钮。我的问题是如何执行事件,因为它只适用于onload或加载网站。我尝试使用keyup
HTML
<input type="text" id="username" required="true">
<input type="email" id="email" required="true" >
<button type="submit" id="login">
Sign Up
</button>
JS
$(document).ready(function() {
if ($('#email').is(':empty') && $('#username').is(':empty')){
$('#login').hide();
}
else {
$('#login').show();
}
});
答案 0 :(得分:3)
您可以使用input
事件。
// Bind `input` event on both the inputs
$('#email, #username').on('input', function() {
// toggle: If argument passed is
// true: show
// false: hide
$('#login').toggle($('#email').val() && $('#username').val());
}).trigger('input'); // Trigger event to call on page load
答案 1 :(得分:2)
您无法使用.is(':empty')
来检查值是否空虚,仅用于检查标记是否为空并且不包含任何子项。相反,你需要使用:
$(input).val().trim().length === 0
所以你的代码变成了:
if ($('#email').val().trim().length === 0 && $('#username').val().trim().length === 0) {
而且,您需要将此附加到更好的事件上,例如,在输入的keyup
上:
最终代码
$(document).ready(function() {
if ($('#email').val().trim().length === 0 || $('#username').val().trim().length === 0) {
$('#login').hide();
}
else {
$('#login').show();
}
$("#email, #username").keyup(function () {
if ($('#email').val().trim().length === 0 && $('#username').val().trim().length === 0) {
$('#login').hide();
}
else {
$('#login').show();
}
});
});
答案 2 :(得分:-1)
试试这个,希望这会有所帮助...... :)
$(document).ready(function() {
$('body').on('change', 'input', validate);
validate();
function validate() {
var inputLength = 0;
$('input').each(function() {
if ($(this).attr('type') == 'text' || $(this).attr('type') == 'email' || $(this).attr('type') == 'password') {
$(this).val() == '' ? inputLength-- : inputLength++;
}
});
inputLength >= 2 ? notEmpty() : isEmpty();
};
function notEmpty() {
$('#login').show();
}
function isEmpty() {
$('#login').hide();
}
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<input type="text" id="username" required="true">
<input type="email" id="email" required="true">
<button type="submit" id="login">
Sign Up
</button>