2011-10-06 9 views
5

Mam funkcję jQuery, które chciałbym wykonać tylko wtedy, gdy sprawdzanie poprawności formularza jest prawdziwe
Mam sprawdzania poprawności i inne jQuery działa poprawnie.
problem polega teraz na tym, że zarówno sprawdzanie poprawności, jak i wykonywanie innych funkcji odbywa się w tym samym czasie.
Chciałbym uruchomić drugą funkcję tylko wtedy, gdy sprawdzanie poprawności formularza jest prawdziwe. tu jest mój skryptjQuery Jeśli funkcja myform.valid() ma wartość true, należy uruchomić inną funkcję jQuery?

<script> 
      $(document).ready(function() { 
       $.validator.addClassRules({ 
        fileName: { 
         required: true 
        } 
       }); 
       $("#myform").validate(); 
       if ($("#myform").valid()) { 
        $(function() { 
         $('#myform').submit(function() { 
          var cboxes = ($('input:checkbox:checked').filter(":checked").length); 
          var nboxes = ($(":checkbox:not(:checked)").length); 
          if ((cboxes > 0) && (nboxes > 0)) { 
           confirm('You have Checked only few locations among the List. \n Are you sure, you do not want to Prescribe from the other locations? '); 
          } else if (cboxes == 0) { 
           alert('Please select atleast One Address \n Where you would prefer to prescribe from.'); 
           return false; 
          } 
          else { 
           return true; 
          } 
         }); 
        }); 
       } 
      }); 
</script> 

doradzić w jaki sposób można uzyskać to zrobić?

+0

Jaki jest Twój kod do tej pory? Opublikuj odpowiednie części, a zobaczymy. –

Odpowiedz

3

Jeśli używasz standard plugin, należy wspierać taki kod:

$(document).ready(function() { 
    $("#myForm").validate({ 
     submitHandler: function(form) { 
      SomeFuncHere(); 
     } 
    }); 
}) 

Kod w submitHandler powinny być nazywane po pomyślnej weryfikacji.

Edit: oparta na kodzie, spróbuj zamiast tego:

$("#myform").validate({ 
    submitHandler: function(form) { 
     var cboxes = ($('input:checkbox:checked').filter(":checked").length); 
     var nboxes = ($(":checkbox:not(:checked)").length); 
     var flag = false; 
     if ((cboxes > 0) && (nboxes > 0)) { 
      flag = confirm('You have Checked only few locations among the List. \n Are you sure, you do not want to Prescribe from the other locations? '); 
     } else if (cboxes == 0) { 
      alert('Please select atleast One Address \n Where you would prefer to prescribe from.'); 
     } 
     else { 
      flag = true; 
     } 
     return flag; 
    } 
}); 
+0

Mogę wybrać twoje sugestie, więc wkleiłem mój scenariusz z nadzieją, że możesz mi pomóc – HaBo

+0

Zobacz teraz moją edycję. –

+0

Wielkie dzięki to zadziałało idealnie – HaBo

5

Jeśli używasz jQuery sprawdzania poprawności plugin następnie metoda valid() zwraca wartość logiczną, aby wskazać, czy formularz został pomyślnie zweryfikowany, więc można po prostu zrobić:

if ($("#myform").valid()) { 
    CallSomeOtherFunction(); 
} 
+0

Mogę wybrać twoje sugestie, więc wkleiłem scenariusz, mam nadzieję, że pomożesz mi lepiej – HaBo

1

Musisz użyć .validate().form()

if (!$("#myform").validate().form()) { 
    return false; //doesn't validate 
}else 
{ 
    //form is validated do your work 
} 
Powiązane problemy