2013-09-03 7 views
6

Mam proste metody wyboru w oparciu o masce wejściowej określającej wszystkie domowe zajęcia Znak:walidacji jQuery: zmiana dynamiczny parametr w ciągu wiadomości

<input type="text" required inputmask="254" name="test"/> 

napisałem funkcję sprawdzania znaków wartość wejściowa przeciwko inputmask i działa w porządku.

Teraz chcę dać użytkownikowi informacje zwrotne, więc ja zdefiniowane moją wiadomość:

$.validator.messages.inputmask = $.validator.format("no, no: input mask is {0}"); 

Ale wolałbym mieć funkcję, budując listę dopuszczalnych znaków na podstawie maski i korzystać z tego o informacje zwrotne, czyli chcę 'manipulować' parametr:

$.validator.messages.inputmask = myFunc("hey dude, you are just allowed to use {0}", getChars(dont_know_which_param_to_reference_here); 

To moja JSFiddle: Input Mask Validation(wszystkie klasy, ale wielkimi literami akceptowane)

Jak widać, param jest łatwy do sprawdzenia względem maski, ale nie może być użyty jako informacja zwrotna od użytkownika.

Czy jest jakiś sposób? Wszelkiego rodzaju pomysły?

Wielkie dzięki!

+0

Proszę podać wystarczającą ilość kodu, aby utworzyć zwięzłą wersję demonstracyjną. – Sparky

+0

Zrobiłem to, spójrz :) –

+0

FYI, '' 'tag jest" samozamykanie się ". Innymi słowy, nie ma czegoś takiego jak tag ''. Po prostu użyj ''. – Sparky

Odpowiedz

11

Cytat OP:

"Chcę 'manipulować' parametr"

Nie ma sposobu, aby konkretnie zmienić komunikaty o błędach dynamicznie. Istnieje jednak obejście.

Używając the .rules('add') method, możesz dynamicznie przeładowywać wiadomości na nowe.

// dynamically change message for required rule on input with name="field" 
$('input[name="field"]').rules('add', { 
    messages: { 
     required: "new message for field 1" 
    } 
}); 

DEMO: http://jsfiddle.net/F5RUG/

Demo działa na stronie obciążenia, jednak można nazwać .rules('add') kiedy chcesz. Jeśli chcesz wywołać .rules() na więcej niż jednym polu naraz, musisz zamknąć je wewnątrz jQuery .each().

DEMO 2: http://jsfiddle.net/F5RUG/1/

+0

hmmm ... Nie wyraziłem się. Chcę zmienić parametr wejściowy, który jest domyślnie używany jako parametr sprzężenia zwrotnego w przypadku błędów.spójrz na moje skrzypce –

+0

@JohnRumpel, Rozumiem. Jeśli jednak celem zmiany parametru jest wyświetlenie nowej wiadomości, musisz ręcznie utworzyć nową wiadomość i zaktualizować ją zgodnie z powyższym opisem. – Sparky

+0

fajne, sprawdzę twoją odpowiedź ... –

3

Można zdefiniować swoją wartość tekstową, jak i funkcji wartości będą aktualizowane za każdym razem, gdy funkcja validate zostanie wywołana.

W ten sam sposób można zdefiniować wartości dynamiczne dla reguł sprawdzania poprawności.

var min_items_qt = 0 

// Here we dynamically change value of `min_items_qt` 

$("#yourForm").validate({ 
    rules: { 
    items_qt: { 
     min: function(){ return min_items_qt; } 
    } 
    }, 
    messages: { 
    items_qt: { 
     min: function(){ return "Min items qt. is: " + min_items_qt} 
    } 
    } 
}); 
Powiązane problemy