2011-07-04 19 views
26

przy użyciu jquery Chcę dokonać wyboru z pola wyboru wymagane (tj. Nie można go pozostawić jako puste domyślne), jeśli zaznaczone jest konkretne pole wyboru. Mój kod:Sprawdzanie poprawności JQuery-wybierz wymagane, jeśli pole wyboru zaznaczone

$(document).ready(function(){ 
    $("#myForm").validate({ 
    rules: { 
     myDropDown: { 
     required: {  
      depends: function(element) { 
      return $("#myCheckbox:checked") 
      } 
     } 
     } 
    } 
    }) 
}) 

HTML:

<input type="checkbox" name="myCheckbox" id="myCheckbox" value="1"> 
<select name="myDropDown" id="myDropDown"> 
    <option value="" selected></option> 
    <option value="1">Choice 1</option> 
    <option value="2">Choice 2</option> 
    <option value="3">Choice 3</option> 
</select> 

Nie tylko kod nie działa to wyrzucając zaczepy jquery, które mam jako kolejnego odcinka javascript.

Wszelkie porady są mile widziane.

Edycja: Teraz, gdy uporządkowałem wszystkie moje nawiasy, zachowanie polega na tym, że powoduje, że pole wyboru jest wymagane, niezależnie od tego, czy pole wyboru jest zaznaczone - tzn. Część zależna nie działa. Inne javascript na stronie działa teraz poprawnie.

+0

Co plugin używasz? – dotty

+0

Przepraszam, używam jquery.validate.min.js –

Odpowiedz

27

Spróbuj jak to

$(document).ready(function(){ 
    $("#myForm").validate({ 
    rules: { 
       myDropDown:{ 
        required: function (element) { 
        if($("#myCheckbox").is(':checked')){ 
         var e = document.getElementById("myDropDown"); 
         return e.options[e.selectedIndex].value=="" ;        
        } 
        else 
        { 
         return false; 
        } 
        } 
       } 
      } 
    }); 
}); 
+0

Cześć, dziękuję, ale to nadal sprawia, że ​​rozwijane wymagane, czy pole wyboru jest zaznaczone. –

+0

mi edytowałem kod ... proszę sprawdź to. dodano ** zwrot fałszywy ** w innym warunku –

+0

To się udało - świetnie, dziękuję bardzo. –

0

nie wiem co plugin używasz, ale

return $("#myCheckbox:checked") 

zwraca obiekt jQuery, jeśli pole jest zaznaczone. Myślę, że byłoby to bardziej poprawne:

return $("#myCheckbox").is(':checked') 

, która zwraca wartość true lub false.

Może to nie ma nic wspólnego ze swoim problemem do

+0

Kod jest oparty na drugim przykładzie "rules" tutaj: http://docs.jquery.com/Plugins/Validation/validate#toptions –

+0

Dzięki, ale zmiana linia, którą sugerujesz, nie pozwala na dokonanie wyboru, gdy pole wyboru jest zaznaczone. –

8

To działa jak czar

inputname: 
{ 
    required: function(){ 
     if($("select[name=inputname]").val() == 1){ 
      return true; 
     } 
     else 
     { 
      return false; 
     } 
    } 
} 

można edytować inputname do Ciebie korzystna.

Aby zmienić go na polu wprowadzania można zmienić wybrać część do wejścia

+1

To może być skompresowane do 'required: function() {return $ (" select [nazwa = nazwa wejścia] "). Val() == 1; } ' – quickshiftin

+0

Lub raczej:' required: function() {return $ ("# elementID"). Val() === 1; } ' –

+1

Zgodnie z dokumentacją (http://jqueryvalidation.org/category/methods/#example:-makes-details-required-only-if-+other-is-cheeded) właściwą metodą jest' rules: { myDropDown: required: {"# myCheckbox: checked"}} ' – gillytech

28

powinien on być w stanie działać tak:

rules : { 
myDropDown:{required:"#myCheckbox:checked"} 
} 
+1

To działa i jest standardową metodą dla dokumentacji: http://jqueryvalidation.org/category/methods/#example:-makes-details-required- tylko-jeśli- # inny-jest-sprawdzany – gillytech

+0

to jest najprostsza odpowiedź, a więc lepszy sposób. – JGilmartin

+0

Działa i jest to najlepsza metoda ... – WalkerNuss

Powiązane problemy