2013-06-15 20 views
8

Z jQueryValidate próbuję uczynić pole wymagane tylko wtedy, gdy inne konkretne pole jest puste. Po przeprowadzeniu wyszukiwania w Internecie zrobiłem to:jQueryValidate - Wymagane pole - zależy nie działa

rules: { 
    marque: { 
      required: { 
       depends: function() { 
        if (($('#add_marque').val() == "Ajouter une marque" && $('#marque').val() == -1) || ($('#add_marque').val() == "" && $('#marque').val() == -1)) { 
         return true; 
        } 
        else { 
         return false; 
        } 
       } 
      } 
    } 
} 

Niestety, to nie działa. Ale jeśli to zrobię:

depends: function() { 
    if (($('#add_marque').val() == "Ajouter une marque" && $('#marque').val() == -1) || ($('#add_marque').val() == "" && $('#marque').val() == -1)) { 
      alert("Here!"); 
      return true; 
     } 
     else { 
      return false; 
     } 
} 

Pojawi się okno alertu. Mój test wydaje się działać. Czy ktoś może mi powiedzieć, co zrobiłem źle? Używam jQuery 1.8.3 i qTip2 z jQueryValidate. Dziękuję bardzo!

Odpowiedz

9

Twoja składnia i użycie wtyczki jest poprawne w stosunku do podanej przez Ciebie. Musisz rozwiązać ten problem, więc najpierw wypróbuj to proste. Czy pojawia się komunikat o błędzie? Jeśli tak, to spróbuj tego

marque: { 
    required: { 
     depends: function() { return true; /* or false */ } 
    } 
} 
+0

Dziękuję za odpowiedź! Zrobiłem to i nic się nie stało. Może problem polega na tym, że to pole jest rozwijaną listą. Użyłem więc osobistej metody, której użyłem w innej formie. Zwraca liczbę całkowitą zamiast "prawda" lub "fałsz", a teraz działa. – LancelotKiin

4

Naprawdę powinien być w stanie to zrobić bez opcji depends, po prostu uczynić pracę funkcji bezpośrednio na obiekcie required:

rules: { 
    marque: { 
      required: function() { 
       if (($('#add_marque').val() == "Ajouter une marque" && (('#marque').val() == -1) || ($('#add_marque').val() == "" && $('#marque').val() == -1)) { 
        return true; 
       } 
       else { 
        return false; 
       } 
      } 
    } 
} 

zobaczyć pracę, prostszy przykład tutaj : http://jsfiddle.net/ryleyb/3hqH6/1/

+2

Zamiast 'if ... else' mógłbyś po prostu:' return (JEŚLI KONDYCJA TUTAJ) ' – rybo111

+1

Nie chciałem zmylić rzeczy dla pytającego - problem, który rozwiązałem, polegał na organizacji" reguł " obiekt. Dobra uwaga! – Ryley

+0

Pomogło to w rozwiązaniu podobnej sytuacji, w której musiałem przetestować konkretną wartość innego pola, dla którego właściwość 'depend' wydaje się odpowiednia. Metoda '.call()' walidatora w podanej funkcji napotkała błąd, ale identyczna funkcja została przekazana do 'required' zamiast boolean wykonanej zgodnie z oczekiwaniami. –

Powiązane problemy