How to disable Search form (input, enter, button) if it's empty or contains only white spaces?
Example code
<form id="example_form" >
<input type="text" placeholder="Search.." name="search">
<button type="submit"><i ></i></button>
</form>
I have tried this jQuery code but it's not working.
$(document).ready(function() {
$('.form_input').keyup(function() {
var empty = false;
$('.form_input').each(function() {
if ($(this).val().length == 0) {
empty = true;
}
});
if (empty) {
$('button[type="submit"]').attr('disabled', 'disabled');
} else {
$('button[type="submit"]').removeAttr('disabled');
}
});
});
CodePudding user response:
Consider the following.
$(function() {
$.fn.isEmpty = function() {
return $(this).val() == "" ? true : false;
}
$("#example_form").submit(function(event) {
event.preventDefault();
var valid = true;
$(".form_input").each(function(i, el) {
valid = valid && !$(el).isEmtpy();
});
return valid;
});
$("#example_form .form_input").keyup(function() {
$("#example_form button[type='submit']").prop("disabled", $(this).isEmpty());
});
});
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css" integrity="sha384-1BmE4kWBq78iYhFldvKuhfTAU6auU8tT94WrHftjDbrCEXSU1oBoqyl2QvZ6jIW3" crossorigin="anonymous">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.1.1/css/all.min.css" integrity="sha512-KfkfwYDsLkIlwQp6LFnl8zNdLGxu9YAA1QvwINks4PhcElQSvqcyVLLD9aMhXd13uQjoXtEKNosOWaZqXgel0g==" crossorigin="anonymous" referrerpolicy="no-referrer" />
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<form id="example_form" >
<input type="text" placeholder="Search.." name="search">
<button type="submit" disabled="true"><i ></i></button>
</form>
This does a few small thing. I have created a small Function to check if an Element is "empty", by checking the Value.
Using Submit callback, we can prevent the form from being submitted by using event.preventDefault()
. We can then check each of the fields and if they are not empty, we can return true
to continue submitting the form or false
to prevent it.
CodePudding user response:
try this
if ($(this).val() === '') {
return
}
do something.....