2015-05-27 5 views
5

У меня есть представление MVC с несколькими кнопками на нем (каждый элемент в корзине делает 2 кнопки) ...Отключить все кнопки на странице

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

(они оба имеют onclick событие)

Когда одна из этих кнопок нажата, я хочу отключить все кнопки для каждого продукта, пока корзина не закончит обновление.

Событие click вызывает функцию JavaScript, которая, в свою очередь, вызывает вызов Ajax. После этого post первое, что я пытаюсь сделать, это отключить все кнопки .....

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

Затем после возвращения вызова Ajax снова включить их ....

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

Я получаю нет но кнопки не отключены.

Где я ошибаюсь?

+0

Попробуйте использовать prop $ ("input [type = button]"). Prop ("disabled", true); – Adil

+5

Ваши элементы не 'input' (они являются кнопками!) - измените свой html на' '(и используйте' .prop ('disabled', true) ') –

+0

@ StephenMuecke Doh! Спасибо, я этого не заметил. Взял html прямо от дизайнера. – Fred

ответ

13

Ваш селектор ошибочен. вместо селектора input.. вы должны использовать псевдо-селектор :button.

Вы можете использовать селектор :button, чтобы выбрать все кнопки.

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

Чтобы включить все кнопки:

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

EDIT

Если вы хотите отключить только кнопки, идентификатор начинается с Product использования:

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

В чем смысл использования псевдо-селектора ': button' против кнопки' '' и использования 'prop' over' attr'? – jered

+3

': button' выберет все кнопки' ',' input [type = "button"] 'и' input [type = "submit"] ' – Tushar

+2

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

1

Вам необходимо использовать селектор button. Попробуйте prop вот так

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

Вероятно потому что вы не используете input, вы используете прямой тег button. Вместо этого попробуйте $("button").attr("disabled", "disable").

Смежные вопросы