2015-05-27 17 views
5

Mam widoku MVC z wieloma przyciskami na nim (każda pozycja w koszu sprawia, 2 przyciski) ...wyłączyć wszystkie przyciski na stronie

<button class="pbbg" id="ProductMinus_161637" type="button">-</button> 
<button class="pbbg" id="ProductPlus_161637" type="button">+</button> 

(obaj mają zdarzenie onclick)

Po naciśnięciu jednego z tych przycisków chcę wyłączyć wszystkie przyciski dla każdego produktu, aż do zakończenia aktualizacji koszyka.

Zdarzenie click wywołuje funkcję JavaScript, która z kolei wykonuje połączenie Ajax. Po tej post pierwszą rzeczą próbuję zrobić, to wyłączyć wszystkie przyciski .....

$("input[type=button]").attr("disabled", "disabled"); 

Następnie po powrocie wywołania AJAX ponownie włączyć je ....

$("input[type=button]").removeAttr("disabled"); 

nie jestem coraz błędy, ale przyciski nie są wyłączone.

Gdzie się mylę?

+0

Spróbuj użyć prop $ ("input [type = button]"). Prop ("disabled", true); – Adil

+5

Twoje elementy nie są 'wejściami' (są to przyciski!) - zmień html na' '(i użyj' .prop ('disabled', true) ') –

+0

@ StephenMuecke Doh! Dzięki, nie zauważyłem tego. Wziął html prosto od projektanta. – Fred

Odpowiedz

13

Twój selektor jest nieprawidłowy. zamiast selektora input.. powinieneś użyć pseudo-selektora :button.

Możesz użyć selektora :button, aby wybrać wszystkie przyciski.

$(':button').prop('disabled', true); // Disable all the buttons 

Aby włączyć wszystkie przyciski:

$(':button').prop('disabled', false); // Enable all the button 

EDIT

Jeśli chcesz wyłączyć tylko przyciski, których id rozpoczyna Product użytku:

$('button[id^="Product"]') 
+0

Jaki jest sens używania pseudo-selektora ': button' kontra' "przycisku" 'i używania' prop' zamiast 'attr'? – jered

+3

': button' wybierze wszystkie' button', 'input [type =" button "]' i 'input [type =" submit "]' – Tushar

+2

@JCD http://stackoverflow.com/a/16051519/2025923 'prop vs. attr' – Tushar

1

Musisz użyć selektora button. Wypróbuj prop w ten sposób

$('button').prop('disabled', true); 
3

Prawdopodobnie ponieważ nie używasz input tag, używasz prostego tagu button. Zamiast tego spróbuj $("button").attr("disabled", "disable").

Powiązane problemy