Reputation: 771
I am showing alerts if 3 textboxes or any single text box is empty
. For example:
if all are empty then alert will be" please fill up all"
else if 1st and 2nd text boxes are empty then alert will be "please fill up 1st and 2nd text box"
similarly if 1st and 3rd text boxes are empty then alert will be "please fill up 1st and 3rd text box"
similarly if 2nd and 3rd text boxes are empty then alert will be "please fill up 2nd and 3rd text box"
similarly if only 1st text box is empty then alert will be "please fill up 1st text box"
similarly if only 2nd text box is empty then alert will be "please fill up 2nd text box"
similarly if only 3rd text box is empty then alert will be "please fill up 3rd text box"
But problem is i have to write so many if-else statements
in javascript if number of text boxes are 10 or more
. Is their any solution for this to minimize the code
and accordingly alert will come if any of the above condition satisfies
?
I have written the if-else code
individually but it is very lengthy like this:
<form name="frm" action="confirmsubmit.jsp">
<script type="text/javascript">
<!--
function confirmation() {
var textboxname1=document.frm.textboxname1;
var textboxname2=document.frm.textboxname2;
var textboxname3=document.frm.textboxname3;
//alert if all text boxes are empty
if((textboxname1.value==null)||(textboxname1.value=="")&& (textboxname2.value=="")||(textboxname2.value==null)){
alert("Please fill up first text box<br/>Please fill up second text box<br/>Please fill up 3rd text box");//alert for all
textboxname1.focus();
return false
}
//alert if 2nd text box is empty
else if((textboxname2.value=="")||(textboxname2.value==null))
{
alert("Please Please fill up second text box");//alert for 2nd text box
textboxname2.focus();
return false
}
//alert if 3rd text box is empty
else if((textboxname3.value=="")||(textboxname3.value==null))
{
alert("Please Please fill up third text box");//alert for 3rd text box
textboxname3.focus();
return false
}
// similarly i have to show alert if 2nd and 3rd boxes are empty and so on, but is there any solution to minimize the code?
return true
}
//-->
</script>
<input type="text" name="textboxname1"/>
<input type="text" name="textboxname2"/>
<input type="text" name="textboxname3"/>
<input type="submit" onclick="return confirmation()"/>
</form>
Upvotes: 0
Views: 1905
Reputation: 7887
to check every empty checkbox use this simple jquery selector:
jQuery('input.test').not('[value]').each(function() {
var blankInput = jQuery(this);
//do what you want with your input
});
your js will be like this:
function confirmation(domForm) {
var jForm = jQuery(domForm);
var values = jForm.find('.check').serializeArray();
var failedFields = [];
for(var i = 0; i < values.length; i++) {
var o = values[i];
if(o.value == null || o.value.length == 0) {
failedFields.push(o.name);
}
}
if(failedFields.length > 0) {
var message = '';
if(failedFields.length == values.length) {
message = 'fill all fields please';
}
else {
message = 'please fill the fields:';
for(var i = 0; i < failedFields.length; i++) {
message += "\n";
message += failedFields[i];
}
}
alert(message);
return false;
}
return true;
}
call confirmation on your onsubmit! like this:
<form name="frm" onsubmit="return confirmation(this)" action="confirmsubmit.jsp">
<input type="text" name="textboxname1" class="check"/>
<input type="text" name="textboxname2" class="check"/>
<input type="text" name="textboxname3"/>
<input type="submit"/>
</form>
Upvotes: 1
Reputation: 318222
Maybe this is what you are looking for:
$('form[name="frm"]').on('submit', function(e) {
var empty = $('input[type="text"]', this).filter(function() {
if ($(this).val()=="") return this;
});
if (empty.length > 0) {
e.preventDefault();
if (empty.length == $(this).children('[type="text"]').length) {
alert('please fill up all');
}else{
var str = 'please fill up ';
$(empty).each(function(index, value) {
var Sepa = index==empty.length-2 ? ' and ' : ', ',
Numb = parseInt(this.name[this.name.length-1]);
Sepa = index==empty.length-1 ? '' : Sepa;
Numb=Numb==1?'1st':Numb==2?'2nd':Numb==3?'3rd':Numb+'th';
str=str+Numb+Sepa;
});
str=str+' text box';
alert(str);
}
}else{
alert('All are filled, form will be submitted');
}
});
Upvotes: 1
Reputation: 887
using jQuery you will be able to do this. To do this with minimum code I suggest the following approach. Add a class to all the textboxes and if any of them is empty show the alert
<input type="text" name="textboxname1" class ="test"/>
<input type="text" name="textboxname2" class ="test"/>
<input type="text" name="textboxname3" class ="test"/>
and in the scripts
function confirmation() {
var elements = $('.test');
var index = 1;
var message = "";
elements.each(function(){
if($(this).val() == ""){
message += "textbox no" + index + "is empty ";
}
index = index + 1;
});
if(message != ""){
alert(message);
}
}
Upvotes: 0
Reputation: 522135
Pseudocode:
emptyTextboxen = []
for each textboxen as textbox
if textbox is empty
emptyTextboxen.push(textbox)
if emptyTextboxen.length == textboxen.length
message = 'Please fill up all textboxen'
else if emptyTextboxen.length > 0
message = 'Please fill up textboxen '
for each emptyTextboxen as emptyTextbox
message += emptyTextbox + ', '
else
message = 'Life is good'
Upvotes: 2