Friday, May 17, 2024
 Popular · Latest · Hot · Upcoming
177
rated 0 times [  183] [ 6]  / answers: 1 / hits: 29025  / 13 Years ago, thu, february 23, 2012, 12:00:00

Short


What I want to do is following: At first, function validate() must check all inputs one by one: if they are not empty (or whitespaced) then move to if statement (for checking radio buttons) But if some of inputs empty then stop whole validate function and focus on empty input.


Here is result: http://jsfiddle.net/tt13/y53tv/4/


Just press ok button, you'll see that it finished first function and fires if too. But I want to exit from whole validate() function in case there is empty field, not only from each() function


Detailed


JS


function validate() {
$('.var_txt').each(function() {
if ($.trim($(this).val()) == '') {
$(this).focus();
return false;
}
});

if (!$(".answer:checked").val()) {
alert("boom");
return false;
}
return true;
}
$(document).ready(function() {
$("#add_question").submit(function(e) {
if (validate()) {
alert("good");
}
e.preventDefault();
})
});​

HTML Markup


 <form id="add_question" method="post" action=""> 
<table>

<tr>

<td class="var_label">

<input class="answer" type="radio" name="answer" value="a" /> a)

</td>

<td>

<input type="text" class="var_txt" name="var_a" />

</td>

</tr>

<tr>

<td class="var_label">

<input class="answer" type="radio" name="answer" value="b" /> b)

</td>

<td>

<input type="text" class="var_txt" name="var_b" />

</td>

</tr>

<tr>

<td class="var_label">

<input class="answer" type="radio" name="answer" value="c" /> c)

</td>

<td>

<input type="text" class="var_txt" name="var_c" />

</td>

</tr>

<tr>

<td class="var_label">

<input class="answer" type="radio" name="answer" value="d" /> d)

</td>

<td>

<input type="text" class="var_txt" name="var_d" />

</td>

</tr>

<tr>

<td class="var_label">

<input class="answer" type="radio" name="answer" value="e" /> e)

</td>

<td>

<input type="text" class="var_txt" name="var_e" />

</td>

</tr>

</table>
<input type="submit" name="submit" value="ok" />

</form>

More From » jquery

 Answers
26

Add a flag that has to be false to continue.



function validate() {
var invalid = false;
$('.var_txt').each(function() {
if ($.trim($(this).val()) == '') {
$(this).focus();
invalid = true;
return false;
}
});
if (invalid) {
return false;
}

if (!$(.answer:checked).val()) {
alert(boom);
return false;
}
return true;
}
$(document).ready(function() {
$(#add_question).submit(function(e) {
if (validate()) {
alert(good);
}
e.preventDefault();
})

});​

[#87252] Thursday, February 23, 2012, 13 Years  [reply] [flag answer]
Only authorized users can answer the question. Please sign in first, or register a free account.
nikhilh

Total Points: 224
Total Questions: 89
Total Answers: 99

Location: Bahrain
Member since Fri, Sep 16, 2022
2 Years ago
;