Reputation: 21
I have a form with text input, numeric input, select and radio. I'm trying to disable the submit button untll all those fileds are filled. I;m trying all diferent wais and there is always a problem. This is what I have so far html:
<div id= "name">
<div class="form-e">
<label for="fname">First name:</label>
<input type="text" placeholder="Enter your first name" id="fname" name="fname" class="text"><br>
</div>
<div class="form-e">
<label for="lname">Last name:</label>
<input type="text" id="lname" placeholder="Enter your last name" name="lname" class="text"><br>
</div>
</div>
<div id = "city" class="form-e">
<label for="city">City</label>
<select name="city" id="city">
<option value="" disabled selected>Choose a city</option>
<option value="new-york" id = "new-york">New York City, NY</option>
<option value="philadelphia" id = "philadelphia">Philadelphia, PA</option>
<option value="scranton" id = "scranton">Scranton, PA</option>
</select>
</div>
<div id = "schedule" class= "form-e">
<div id="side1"> <label>Prefered Schedule: </label><br></div>
<div id = "side2">
<div class = "inline">
<input type="radio" id = "part-time" name="schedule" value="part-time">
<label for="part-time">Part-Time</label><br>
</div>
<div class = "inline">
<input type="radio" id = "full-time" name="schedule" value="full-time">
<label for="full-time">Full-Time</label><br>
</div>
</div>
</div>
<div class = "form-e" >
<label for="amount">Amount of children for care:</label>
<input type="number" class = "number" id="amount" name="amount" min = "0">
</div>
jQuery:
let allInput = $('#fname, #lname, #amount, #city, input[name = "schedule"]:checked');
allInput.on('change', function(e){
e.preventDefault();
let validateForm = false;
$.each(allInput, function(){
console.log($(this).val());
if ($(this).val()===''){
validateForm = true;
}
});
console.log(validateForm);
if (validateForm){
$('#s-button').prop('disabled', true);
}
else{
$('#s-button').prop('disabled', false);
}
});
it like the select and radio are always set to have an empty value
Upvotes: 0
Views: 38
Reputation: 21
//target all required fields
let allInput = $('#fname, #lname, #full-time, #amount, #part-time, #city');
//on change prompt this function
allInput.on('change', function(e){
//prevent deafault
e.preventDefault();
//these are if nested statements making sure all the fields required are not empty
//if fname, lname, and amount fileds are not empty
if ($('#fname').val()!=='' && $('#lname').val()!== '' && $('#amount').val()!==''){
//if either part time or full time are chcked
if ($('#full-time').is(':checked')||$('#part-time').is(':checked')){
//if the option selected has a value
if ($('select option:selected').val().length >0){
//enable the submit button
$('#s-button').prop('disabled', false);
}
}
}
});
Upvotes: 0