2012-12-09 2 views
5

Ich habe ein sehr seltsames Problem mit dem jQuery Validation Plugin, wo es nicht validiert select, die zuvor ausgefüllt und dann geändert wurde.jQuery Validierung Plugin nicht validiert vorgefüllt wählen

Sie den Code anschauen können hier: http://jsfiddle.net/VwRJ8/1/

Der Code nie die alert() in den folgenden Zeilen feuert:

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

Die 'Auswahl'-Box wird beim Senden validiert, aber nicht bei der Änderung. Außerdem sollten Sie einen 'name' Wert für Ihre' select' angeben. – 3dgoo

+0

Ich hätte genauer sein sollen. Es bestätigt nicht beim Senden. – RHPT

+0

Möglicherweise liegt ein Fehler in Ihrem JavaScript vor, der dazu führt, dass die Validierungsfunktion nie aufgerufen wird. Ihr Beispielcode funktioniert beim Senden einwandfrei. Hier ist eine Demo, die folgendes zeigt: http://jsfiddle.net/bPcr8/5/. Überprüfen Sie Ihre Fehlerkonsole, um festzustellen, ob Fehler aufgetreten sind. Können Sie andernfalls eine Live-Version des Problems für alle freigeben? – 3dgoo

Antwort

5

Sie können überprüfen, ob die Auswahl gültig ist jedes Mal, wenn der Wert geändert wird:

Javascript

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

Demo

Edit 1

Hier ist das, was einen Fehler in der Javascript verursacht, welche die Validate-Funktion verhindert richtig zu bedienen:

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

Wenn Sie das Entfernen postalcode: true Zeile, validieren wird ordnungsgemäß aufgerufen.

Demo

+0

Ich habe eine benutzerdefinierte Validierungsregel für die Postleitzahl, die ich vergessen habe einzuschließen: \ Würde das immer noch ein Problem verursachen? – RHPT

+0

http://jsfiddle.net/VwRJ8/6/ Es scheint kein Problem mit der Validierungsregel zu geben. Select wird korrekt validiert. – 3dgoo

+0

Es ist Bizaare, dass ich es nicht auf den tatsächlichen Code arbeiten kann (es ist in einem Unternehmensnetzwerk, so dass ich es nicht zeigen kann). Ich habe mehrere Formulare mit separaten Validierungsregeln. Ich frage mich, ob das das Problem ist. – RHPT

1

http://jsfiddle.net/YRAga/2/

$('#myform').validate({ 
    rules: { 
     myselectbox: { 
      required: true 
     } 
    } 
}); 

$("#myselectbox").change(function() { 
    $("#myform").submit(); 
});​ 
1

, wenn Sie die Validierung tun, während die Option zu ändern, dann versuchen, das Änderungsereignis der Select-Option zu handhaben und lösen die Validierung programmatisch

Versuchen Sie so etwas wie

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

Siehe die Geige: here

+0

kann validate() nicht mehr als einmal aufrufen! –