2013-08-19 8 views
6

Mam formularz z 2 polami; nr telefonu komórkowego i nr telefonuWtyczka jQuery Validate, wymagane jest jedno z dwóch pól

co najmniej jedno z pól musi zostać wypełnione, ale można je wypełnić.

Potrzebuję sprawdzania poprawności jquery, aby rzucić błąd, jeśli żaden z nich nie jest wypełniony tylko.

udało mi się osiągnąć to z:

rules: { 
      mobile:{ 
       required: { 
        depends: function(element) { 
         return $("#regTelephone").val() === ''; 
        } 
       } 
      }, 
      telephone:{ 
       required: { 
        depends: function(element) { 
         return $("#regMobile").val() === ''; 
        } 
       } 
      } 
} 

jednak, jeśli tylko jedno pole jest puste, to pole nadal dostaje „ważny” klasę, która nie ma jak mój poprawny css ma zieloną granicę (więc puste pole wciąż otrzymuje zieloną ramkę)

więc: jak uzyskać puste pole (pod warunkiem, że druga ma wartość), aby nie uzyskać prawidłowej klasy, a zatem zielonej granicy?

+0

Można umieścić if po nim jest sprawdzana w celu usunięcia poprawną klasę jeśli '.val' jest null –

+1

@Zeaklous, FYI, wtyczka ma już reguła/metoda dla tej sytuacji o nazwie' require_from_group' . – Sparky

Odpowiedz

13

Używając the optional additional-methods.js file, istnieje metoda o nazwie require_from_group, która wykonuje dokładnie to, o co prosisz. (Należy użyć przynajmniej wersji 1.11.1 wtyczki w celu uniknięcia błędów przeszłości.)

rules: { 
    mobile:{ 
     require_from_group: [1, '.mygroup'] 
    }, 
    telephone:{ 
     require_from_group: [1, '.mygroup'] 
    } 
}, 
.... 

Parametr 1 jest ilu z grupy są wymagane. W znacznikach HTML pola w grupie muszą zawierać class pasujący do class określony w drugim parametrze.

<input type="text" class="mygroup" name="mobile" /> 
<input type="text" class="mygroup" name="telephone" /> 

roboczy DEMO: http://jsfiddle.net/NfcxX/

Mój przykład pokazuje również opcję groups które łączy w sobie wiele komunikatów o błędach w jednym.

+0

Wystąpił problem z tym. Wydaje się, że nie można walidować innych pól. Dodałem początkowe pole "tytuł", a walidacja zostanie zignorowana: http://jsfiddle.net/NfcxX/19/ – Andy

+1

@Andy, na GitHub jest mowa o tym, że błąd został naprawiony w najnowszej wersji beta jeszcze nie. wydany. – Sparky

-1
<input type="text" name="mobile" id="regMobile"> 
<input type="text" name="telephone" id="regTelephone"> 

rules: { 
      mobile:{ 
       required: { 
        depends: function(element) { 
         return $("#regTelephone").val() == '' 
        } 
       } 
      }, 
      telephone:{ 
       required: { 
        depends: function(element) { 
         return $("#regMobile").val() == '' 
        } 
       } 
      } 
} 
+0

Gdyby to było tak proste, nie potrzebowalibyśmy metody 'require_from_group'. – Sparky

Powiązane problemy