Как отключить кнопку с помощью jquery

У меня есть страница индекса, где у меня есть кнопка «Создать». При нажатии кнопки «Создать» открывается новый вид под названием CreateStudent View, где у меня есть несколько вкладок начальной загрузки. На каждой вкладке есть кнопка. Представление указателя: кнопка

<div class="row">
    <div class="col-md-6 text-right"><a class="btn btn-default CreateMe" href="/MyProject/StaffCreate" role="button">Create New</a></div>
</div>

А в CreateStudent View есть кнопка LogOnAdd на одной из вкладок:

<div class="row">
    <div class="col-md-8 text-right">
        <a class="btn btn-default LogonAdd" id="LogonAdd" href="#" role="button">Add </a>
    </div>
</div>

Используя приведенный ниже jquery, я пытаюсь отключить кнопку LogOnAdd.

$('.CreateMe').click(function () {
    $(".LogonAdd").attr("disabled", true);
});

Но приведенный выше код jquery не работает. Кнопка не отключается. Может ли кто-нибудь указать мне, какую ошибку я сделал в jquery.

Я использую vs 2010 и mvc4.

Я сомневаюсь, что он не может найти контроль.


person jubi    schedule 07.03.2016    source источник
comment
Попробуйте посмотреть здесь, вопрос похож на ваш.   -  person prtnkl    schedule 07.03.2016
comment
Не дубликат, так как он говорит о кнопке на той же странице   -  person jubi    schedule 08.03.2016


Ответы (2)


Попробуйте это, добавьте класс в свой тег привязки, когда вы хотите его отключить, и в css вы можете настроить события мыши так, чтобы они ничего не делали с ним, здесь

$('.CreateMe').click(function () {
    $('.LogonAdd').addClass('disabledLink');
});

И CSS

a.disabledLink {
  pointer-events: none;
}

Чтобы снова включить ссылку, просто удалите класс.

$('.LogonAdd').removeClass('disabledLink');

Редактировать 1: Поскольку вы сказали, что вам нужно отключить кнопку, которая является другим представлением, но обрабатывать отключающие элементы в текущем представлении, вы можете сделать это, установите переменную, чтобы сказать, должна ли кнопка быть отключена или нет , при загрузке страницы второго представления запустите скрипт jquery, чтобы проверить это значение и переключить состояние ссылки. Вот фрагмент кода

$('.CreateMe').click(function () {
  localStorage.setItem('disableLogOnAdd', true); //set
});

В событии готовности документа второй страницы сделайте это,

if(localStorage.getItem('disableLogOnAdd')){
  $('.LogonAdd').addClass('disabledLink');
}

Обратите внимание: сохраните правило css для удаления событий указателя, как указано выше.

person Rajshekar Reddy    schedule 07.03.2016
comment
якорь не введен, логический атрибут disabled на него не влияет - person A. Wolff; 07.03.2016
comment
пытался. но не работает в моем случае. Обратите внимание, что кнопка CreateMe находится на главной странице, а кнопка, которую мне нужно отключить, находится на другой странице. В этом проблема? - person jubi; 07.03.2016
comment
@jubi проверьте мой обновленный ответ. - person Rajshekar Reddy; 07.03.2016
comment
пытался, но не повезло. Как упомянул Закария, JS может работать только с текущим DOM, а не с другими страницами DOM. Кнопка, которую я хочу отключить, находится на другой странице. так что по его словам это невозможно. Можете ли вы предложить обходной путь для этого - person jubi; 07.03.2016
comment
@jubi обновил мой ответ, проверьте - person Rajshekar Reddy; 07.03.2016
comment
@jubi, вы можете пометить это как ответ, если это решило вашу проблему, чтобы это могло быть полезно для будущей аудитории. - person Rajshekar Reddy; 07.03.2016
comment
Интересно, почему на репутации -2. - person jubi; 08.03.2016

Атрибут disabled работает только с тегами <input>. вы не можете использовать его с якорем, это не будет иметь никакого эффекта.

Поскольку вы используете начальную загрузку, атрибут disabled будет работать с привязкой с role='button', он должен быть true :

$('.LogonAdd').attr("disabled","true"); 
//OR
$('.LogonAdd').attr("disabled","disabled");

ПРИМЕЧАНИЕ. Это не сработает в вашем текущем контексте, поскольку вы пытаетесь отключить элемент, которого нет на текущей странице.

Итак, если я действительно понимаю, что другие кнопки находятся на той же странице, только на разных вкладках. в этом случае вы можете отключить кнопки на других вкладках по умолчанию (в html-коде), а затем включить их, когда вы нажимаете кнопку «Сохранить» на первой вкладке.

person Zakaria Acharki    schedule 07.03.2016
comment
Тем не менее он включен. - person jubi; 07.03.2016
comment
якорь не введен, логический атрибут disabled на него не влияет - person A. Wolff; 07.03.2016
comment
Правильно ли я нахожу кнопку? - person jubi; 07.03.2016
comment
попробовал $('.LogonAdd').attr(отключено,отключено); но не работает - person jubi; 07.03.2016
comment
необходимо отключить на другой странице. @jubi это невозможно, и в этом проблема, JS может работать только с текущим DOM, а не с DOM других страниц. - person Zakaria Acharki; 07.03.2016
comment
О!! Нееет. Итак, в моем случае вы можете предложить любую работу. Я хочу отключить кнопки на всех других вкладках, пока я не сохраню детали на первой вкладке, при сохранении моей первой вкладки будет создан идентификатор. Другие кнопки вкладок должны быть отключены, пока я не сгенерирую идентификатор. Как только я нажму «Сохранить с первой вкладки, я хочу». чтобы включить кнопку также. есть ли способ добиться этого - person jubi; 07.03.2016
comment
Итак, если я действительно понимаю, что другие кнопки находятся на той же странице, только на разных вкладках. в этом случае вы можете отключить кнопки на других вкладках по умолчанию (в html-коде), а затем включить их, когда вы нажимаете кнопку «Сохранить» на первой вкладке. - person Zakaria Acharki; 07.03.2016