czy istnieje sposób na wyłączenie wszystkich pól (pole tekstowe / pole tekstowe / opcja / wejście / pole wyboru / przesłać itp.) w formularzu, podając tylko nazwę nadrzędnego div w jquery / javascript?
Zwróć uwagę, że w ten sposób spowodujesz, że wartości tych elementów „znikną” podczas przesyłania formularza - aby zachować wartość, wprowadź je readOnly, a nie wyłącz.
Pomysł może ukrywać / pokazywać element div przed elementami sterującymi, na które pozwala / zapobiega kliknięciu, oraz stylowo wyłączać elementy sterujące za pomocą CSS.
Jaider
Odpowiedzi:
261
Spróbuj użyć :inputselektora wraz z selektorem nadrzędnym:
czy mogę tego użyć, aby ustawić wszystkie dane wejściowe wewnątrz div na wartość 0?
jackson 5
2
Chcę wyłączyć <a> także ... Mój <a> też ma onclick
RAJ
7
Cytując jQuery : Ponieważ: input jest rozszerzeniem jQuery i nie jest częścią specyfikacji CSS, zapytania używające: input nie mogą korzystać ze zwiększenia wydajności zapewnianego przez natywną metodę DOM querySelectorAll (). Aby uzyskać najlepszą wydajność, używając: input do wybierania elementów, najpierw wybierz elementy za pomocą czystego selektora CSS, a następnie użyj .filter (": input").
acme
2
@acme: Zgadzam się w 100%, ale pytanie nie daje żadnych wskazówek co do tego, według którego selektora mógłbym filtrować. Jedyną informacją, jaką otrzymałem, było to, że użytkownik musi mieć możliwość zrobienia tego z nazwą rodzicadiv i to wszystko. Gdybym miał więcej informacji, mógłbym wymyślić bardziej wydajne rozwiązanie.
Andrew Whitaker,
1
Użyj .prop () zamiast .attr () (powyżej jquery 1.6)
powinno być ('input, textarea, button'), wszystkie selektory powinny być cytowane z jednym zestawem cudzysłowów. api.jquery.com/multiple-selector Robiąc to po swojemu, wysyłasz wiele argumentów.
Ivan Ivanić
2
Znajdzie to tylko dane wejściowe, ignorując obszary tekstowe i przyciski. Najlepszym rozwiązaniem jest selektor: input, ale jeśli chcesz je jawnie wymienić, musisz użyć $('#mydiv').find('input, textarea, button').
Mark Hildreth
1
... lub po prostu $ ('# your-form'). children (). prop ('disabled', true);
walv
@walv Twój kod działa tylko wtedy, gdy wszystkie elementy formularza są jednym potomkiem formularza. Funkcja Find () znajduje wszystkie elementy na liście niezależnie od poziomu podrzędnego. Ten wiersz kodu jest poprawny poza używaniem właściwości zamiast attr dla nowych wersji jquery.
Używam poniższej funkcji w różnych miejscach. Działa w elementach div lub button w tabeli, o ile używany jest prawy selektor. Po prostu „: przycisk” nie włączał się ponownie.
Dla mnie zaakceptowana odpowiedź nie zadziałała, ponieważ miałem kilka ukrytych pól asp net, które również zostały wyłączone, więc wybrałem tylko wyłączenie widocznych pól
//just to save the list so we can enable fields latervar list =[];
$('#parent-selector').find(':input:visible:not([readonly][disabled]),button').each(function(){
list.push('#'+this.id);});
$(list.join(',')).attr('readonly',true);
readOnly
, a nie wyłącz.Odpowiedzi:
Spróbuj użyć
:input
selektora wraz z selektorem nadrzędnym:źródło
div
i to wszystko. Gdybym miał więcej informacji, mógłbym wymyślić bardziej wydajne rozwiązanie.źródło
$('#mydiv').find('input, textarea, button')
.W przypadku jquery 1.6+ użyj
.prop()
zamiast.attr()
,lub
źródło
źródło
Po prostu ta linia kodu wyłączy wszystkie elementy wejściowe
źródło
Co powiesz na osiągnięcie tego za pomocą tylko atrybutu HTML „wyłączony”
Po prostu ustawiając wyłączone w zestawie pól, wszystkie pola wewnątrz tego zestawu zostaną wyłączone.
źródło
Używam poniższej funkcji w różnych miejscach. Działa w elementach div lub button w tabeli, o ile używany jest prawy selektor. Po prostu „: przycisk” nie włączał się ponownie.
źródło
Następujące wyłączy wszystkie dane wejściowe, ale nie będzie w stanie ich do klasy btn, a także doda klasę, aby nadpisać wyłączone css.
klasa css
źródło
Dla mnie zaakceptowana odpowiedź nie zadziałała, ponieważ miałem kilka ukrytych pól asp net, które również zostały wyłączone, więc wybrałem tylko wyłączenie widocznych pól
źródło
Użyj klasy CSS, aby zapobiec edytowaniu elementów Div
CSS:
JS:
Lub dodaj nazwę klasy w tagu HTML. Uniemożliwi to edycję elementów Div.
źródło
Tylko tekst
Tylko typ hasła
Tylko typ e-mail
źródło