Reputation: 113
I have multiple date of birth dropdowns (day, month, year). How can I have a div show if any of them are null?
I've tried something like this
if ($(".MyClass").val() === "") {
$("#showDiv1").show();
} else {
$("#showDiv1").hide();
}
with a div like
<div id="showDiv1">
My Div
</div>
<select>
<option value="">Choose Value..</option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
</select>
<select>
<option value="">Choose Value..</option>
<option value="A">A</option>
<option value="B">B</option>
<option value="C">C</option>
<option value="D">D</option>
</select>
This only seems to work if it's just one select, rather than multiple selects.
Thanks,
fiddle: https://jsfiddle.net/62a1pdsk/
Upvotes: 1
Views: 131
Reputation: 6328
Try this:
$(".myclass").change(function() {
if($(".myclass").val()===""){
$("#showDiv1").show();
} else {
$("#showDiv1").hide();
}
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="showDiv1">
My Div
</div>
<select class="myclass">
<option value="">Choose Value..</option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
</select>
<select class="myclass">
<option value="">Choose Value..</option>
<option value="A">A</option>
<option value="B">B</option>
<option value="C">C</option>
<option value="D">D</option>
</select>
Upvotes: 0
Reputation: 82241
You need to filter out all elements that do not have value and then use the count of returned element as condition to show hide div:
var unselectedmyclass = $(".MyClass").filter(function(){return $(this).val() == ""});
if ( unselectedmyclass.length) {
$("#showDiv1").show();
}else{
$("#showDiv1").hide();
}
Upvotes: 1
Reputation: 728
Try this
$("select").on("change",function(){
var a = $("select:first").val();
var b =$("select:last").val();
if(a=="" || b=="" )
$("#showDiv1").show();
else
$("#showDiv1").hide();
});
https://jsfiddle.net/62a1pdsk/
Upvotes: 0
Reputation: 74420
This would do the trick:
$('.MyClass').change(function() {
$('#showDiv1').toggle(!!$('.MyClass').filter(function() {
return !this.value;
}).length);
});
Upvotes: 2
Reputation: 2412
Try this
$("select").change(function() {
var flag = 0;
$("select").each(function(a, b) {
if ($(this).val() == "") {
flag = 1;
}
flag == 1 ? $("#showDiv1").show() : $("#showDiv1").hide();
});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="showDiv1">
This div is display if any dropdown value is ""
</div>
<select>
<option value="">Choose Value..</option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
</select>
<select>
<option value="">Choose Value..</option>
<option value="A">A</option>
<option value="B">B</option>
<option value="C">C</option>
<option value="D">D</option>
</select>
Upvotes: 1
Reputation: 8193
// Add your javascript here
$(function() {
function ValidateSelect() {
var isValid = true;
$(".MyClass").each(function() {
if ($(this).val() === "") {
isValid = false;
}
});
return isValid;
}
$(".MyClass").change(function() {
if (ValidateSelect()) {
$("#showDiv1").hide();
} else {
$("#showDiv1").show();
}
})
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js"></script>
<div id="showDiv1">
My Div
</div>
<select class="MyClass">
<option value="">Choose Value..</option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
</select>
<select class="MyClass">
<option value="">Choose Value..</option>
<option value="A">A</option>
<option value="B">B</option>
<option value="C">C</option>
<option value="D">D</option>
</select>
</body>
$(function() {
function ValidateSelect() {
var isValid = true;
$(".MyClass").each(function() {
if ($(this).val() === "") {
isValid = false;
}
});
return isValid;
}
debugger;
$(".MyClass").change(function() {
if (ValidateSelect()) {
$("#showDiv1").hide();
} else {
$("#showDiv1").show();
}
})
});
Upvotes: 1