2013-08-22 14 views
5

Powiedzmy mam zestaw wejść na formularzu:wybrać wszystkie wejścia z wyjątkiem ukryty (ale z jednym wyjątkiem)

<form id="myform"> 
    <input type="checkbox" id="goat_1"> 
    <input type="checkbox" id="goat_2"> 
    <input type="text" id="pig_3"> 
    <input type="hidden" id="cow_1"> 
    <input type="hidden" id="chick_3"> 
    <input type="hidden" id="duck_5"> 
</form> 

Chcę wybrać wszystkie wejścia, z wyjątkiem type="hidden", ale z jednym wyjątkiem chcę wszelkie ukryte dane wejściowe o identyfikatorze zaczynającym się od "duck". Potrzebuję tego wszystkiego w jednej tablicy, dzięki czemu mogę iterować przez to.

więc dwie pierwsze części są proste:

$("#myform").find(":input").not("[type=hidden]").each(
              function() { alert("do stuff"); }) 

Ale co wyjątkiem?

Szukam najczystszego sposobu na to (wolę jedną linię/oświadczenie).

Odpowiedz

7

Spróbuj

$("#myform").find(":input").not("[type=hidden]:not([id^='duck'])").each(function() { 
    alert("do stuff"); 
}); 
+0

+1, nie pójdziesz! – vee

0

Spróbuj tego:

$('#myform > input').not(':hidden:not([id^=duck])').each(function (i, e) { 
    alert('This is my id: ' + e.id); 
}); 

przykład Praca w tym fiddle.

Powiązane problemy