2012-12-09 5 views
5

Mam bardzo dziwny problem z wtyczką jQuery Validation, w której nie sprawdza poprawności select, która została wstępnie wypełniona, a następnie zmodyfikowana.Wtyczka sprawdzania poprawności jQuery nie sprawdza poprawności wstępnie wypełnionego wyboru

Można spojrzeć na kod tutaj: http://jsfiddle.net/VwRJ8/1/

Kod nigdy pożary alert() w następujących liniach:

$('#edit_loc_save').click(function() { 
    var foo = $('#add_new_loc_form').valid(); 
    alert(foo); 
}); 
+0

Pole 'wybierz' sprawdza się po przesłaniu, ale nie jest początkowo związane ze zmianą. Powinieneś również umieścić wartość 'name' dla swojego' select'. – 3dgoo

+0

Powinienem być bardziej konkretny. To nie jest sprawdzanie poprawności przy przesyłaniu. – RHPT

+0

W twoim javascript może być błąd powodujący, że funkcja sprawdzania poprawności nigdy nie będzie wywoływana. Twój przykładowy kod działa poprawnie podczas przesyłania. Oto wersja demonstracyjna: http://jsfiddle.net/bPcr8/5/. Sprawdź konsolę błędów, aby zobaczyć, czy są jakieś błędy. W przeciwnym razie możesz udostępnić wersję na żywo dla wszystkich? – 3dgoo

Odpowiedz

5

Można sprawdzić, czy select jest ważny każdorazowo wartość ulega zmianie:

JavaScript

$('#myform').validate(); 
$('#myselectbox').on('change', function() { 
    $(this).valid(); 
}); 

Demo

Edycja 1

Oto, co jest przyczyną błędu w JavaScript, który uniemożliwia funkcję sprawdzania poprawności, aby działać poprawnie:

new_loc_zip: { 
    required: true, 
    postalcode: true // This is not a correct setting in jquery validate 
}, 

Jeśli usunąć postalcode: true linia, sprawdzanie poprawności będzie wywoływać poprawnie.

Demo

+0

Mam niestandardową regułę sprawdzania poprawności kodu pocztowego, której nie pamiętam: \ Czy to nadal powoduje problem? – RHPT

+0

http://jsfiddle.net/VwRJ8/6/ nie wydaje się, aby wystąpił problem z zasadą sprawdzania poprawności w. Wybór jest poprawnie sprawdzany. – 3dgoo

+0

To dziwne, że nie mogę zmusić go do pracy nad rzeczywistym kodem (jest w sieci firmowej, więc nie mogę tego pokazać). Mam wiele formularzy z osobnymi regułami sprawdzania poprawności. Zastanawiam się, czy to jest problem. – RHPT

1

jeśli chcesz zrobić walidacji podczas zmieniania opcji, a następnie spróbuj obsłużyć zdarzenia zmiany select opcji i wyzwalać sprawdzanie programowo

Spróbuj czegoś takiego

$(document).ready(function() { 
     $('#myselectbox').change(function() { 
       $('#myform').validate({ 
          rules: { 
           myselectbox: {required: true } 
          } 
          }).form(); 
         }); 
        });​ 

Zobacz skrzypce: here

+0

nie może wywołać metody validate() więcej niż jeden raz! –