jquery
  • forms
  • validation
  • input
  • 2012-02-16 7 views 34 likes 
    34

    Próbuję zaznaczyć wszystkie elementy napędowe z wyjątkiem input type = "submit// przycisk resetjak używać jquery do wybierania wszystkich wejść, które nie są przesyłane, resetować ani przycisk?

    Próbowałem dokonać wyboru takiego:

    inputSelector = 'input:not(input[type=button], input[type=submit], input[type=reset]), textarea, select'; 
    

    Ale to nie działa, ponieważ złożyć przyciski zawsze do ostatecznego wyboru.

    jakiś pomysł co jest nie tak z powyższych.

    dzięki!

    Odpowiedz

    48

    Spróbuj modyfikowania wybieraka łańcucha .not(...) jak:

    var inputs = $('input, textarea, select') 
           .not(':input[type=button], :input[type=submit], :input[type=reset]'); 
    
    $(inputs).each(function() { 
        console.log(this.type); 
    }); 
    

    To sprawia, że ​​(prawdopodobnie) bardziej czytelne i powinny działać jak można się spodziewać.

    +0

    brzmi dobrze. Spróbujmy. – frequent

    +0

    Używam go w wtyczce, więc domyślam się, że utknąłem z wybrednym selektorem. wciąż próbuję ... – frequent

    +0

    Proszę złożyć swoje pierwsze rozwiązanie, proszę. Oboje są dobrzy i sprawili, że mój dzień ... – frequent

    5

    Ta odpowiedź jest prawdopodobnie trudniejsza do odczytania niż Michael Robinson, ale uważam, że jest bardziej zwięzła. Zamiast uruchamiać funkcję not(), można wybrać do niej przy użyciu :input, aby zebrać wszystkie elementy formularza, a następnie filtrować z pseudo klasą :not() dla każdego niepożądanego typu wejścia.

    Z dokumentacji API jQuery (https://api.jquery.com/input-selector/):

    Selektor :input zasadzie wybiera wszystkie kontrolki formularza.

    z "CSS" -jak wersja selektor, że :not() psuedo-element selektory są oddzielne, i może być stosowany w CSS 3, zbyt:

    var inputs = $("#theForm").find(":input:not([type=button]):not([type=submit]):not([type=reset])"); 
    
    Powiązane problemy