2015-02-19 4 views
0

Итак, я пытаюсь сделать так, чтобы после нажатия элемента get функция щелчка не сработала, пока не завершится мой $.post.Отключение .click(), а затем повторное включение его

Это то, что у меня есть сейчас, но оно не работает. Я принимаю .prop('disabled', true) не работает для div элементов. Может ли кто-нибудь помочь мне?

$("#textbox_item").click(function() { 

    //don't let anyone click .textbox_item until $.post is complete 
    $("#textbox_item").prop('disabled', true).text("Doing something.."); 

    $.post("/action", { item: "123" }).done(function(data) { 
     $("#textbox_item").prop('disabled', false).text("Click me");   
    }); 

}); 

ответ

1

Рассмотрите возможность установки и проверки .data() для «инвалидов» атрибута данных.

$(".textbox_item").click(function() { 
    //don't do anything if #textbox_item has been disabled 
    if($("#textbox_item").data('disabled')) { return false; } 

    //don't let anyone click .textbox_item until $.post is complete 
    $("#textbox_item").data('disabled', true).text("Doing something.."); 

    $.post("/action", { item: "123" }).done(function(data) { 
     $("#textbox_item").data('disabled', false).text("Click me"); 
    }); 

}); 

Я также заметил, что вы, кажется, смешивания ID и селекторов класса - я не знаю, если это намеренно или нет, но я советую дважды проверять, чтобы убедиться, что вы знаете, что вы отключить и нажмите.

0

2 проблемы здесь:

  • Вы пытаетесь использовать свойство кнопки на DIV, который не будет работать. Свойство HTML Disable не относится к div.
  • Вы смешиваете селекторы. Ваш Click me div имеет класс textbox_item, но ваш звонок $("#textbox_item") ищет что-то с textbox_item как id не как класс. Вы должны использовать $(".textbox_item") каждый раз, когда хотите обратиться к этому элементу.

HTML

<button class="textbox_item">Click me</button>

JS

$(".textbox_item").click(function() 
    $(this).prop('disabled', true); 
    $.post("/action", { item: "123" }).done(function(data) { 
     $(".textbox_item").prop('disabled', false); 
    }); 
}); 
0

Почему бы не использовать предоставленную функцию библиотеки Jquery специально для этого?

http://api.jquery.com/one/

button.one('click', function() { 
    //on ajax success 
    Button.one('click', func) 
}) 
+0

Я не знаю, что это было, но я хочу, чтобы иметь возможность нажать на кнопку несколько раз. Только до завершения процесса. – bryan

+0

, поэтому вы повторно присоединяете событие после завершения обработки – sctskw

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