2013-02-27 10 views
247

Moja strona tworzy wiele przycisków jako id = 'rbutton_"+i+"'. Poniżej jest mój kod:Przycisk wyłączania w jQuery

<button type='button' id = 'rbutton_"+i+"' onclick=disable(i);>Click me</button> 

w JavaScript

function disable(i){ 
    $("#rbutton'+i+'").attr("disabled","disabled"); 
} 

Ale to nie mój wyłączyć przycisk, po kliknięciu na niego.

+6

'rbutton _ "+ i +"' nie jest poprawnym ID: przycisk

$('#button_id').attr('disabled','disabled'); 

włączyć. –

+0

Jak mogę określić identyfikator. Tworzy się w moim javascript wewnątrz pętli for. – user2047817

+0

A co z tworzeniem jsFiddle, abyśmy mogli zobaczyć, co robisz? – j08691

Odpowiedz

477

Zastosowanie .prop zamiast (i oczyścić swój ciąg wyboru):

function disable(i){ 
    $("#rbutton_"+i).prop("disabled",true); 
} 

generowane HTML:

<button id="rbutton_1" onclick="disable(1)">Click me</button> 
<!-- wrap your onclick in quotes --> 

ale podejście "najlepsze praktyki" jest użycie zdarzenia JavaScript wiązania i Zamiast tego:

$('.rbutton').on('click',function() { 
 
    $(this).prop("disabled",true); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script> 
 
<button class="rbutton">Click me</button>

http://jsfiddle.net/mblase75/2Nfu4/

+0

Oto małe skrzypce, które stworzyłem. Proszę, pozwól mi, co robię źle. http://jsfiddle.net/2Nfu4/3/ – user2047817

+0

@ user2047817 Uruchom jako "no wrap - in head" http://jsfiddle.net/mblase75/2Nfu4/4/ – Blazemonger

+0

OK. Działało w No Wrap - w Head..Ale mogę zapytać, dlaczego? Może to jest coś podobnego, nie robię tego w moim prawdziwym kodzie !! – user2047817

27

Spróbuj kod:
HTML

<button type='button' id = 'rbutton_'+i onclick="disable(i)">Click me</button> 

funkcja

function disable(i){ 
    $("#rbutton_"+i).attr("disabled","disabled"); 
} 

Inne rozwiązanie z jQuery

$('button').click(function(){ 
    $(this).attr("disabled","disabled"); 
}); 

DEMO


Inne rozwiązanie z czystego javascript

<button type='button' id = 'rbutton_1' onclick="disable(1)">Click me</button> 

<script> 
function disable(i){ 
document.getElementById("rbutton_"+i).setAttribute("disabled","disabled"); 
} 
</script> 

DEMO2

+0

@ user2047817 edytuj moją odpowiedź –

+0

Druga funkcja .click() działa doskonale w twoim demo. Ale muszę użyć oddzielnej metody, jak wspomniano w twoim pierwszym rozwiązaniu, ale to nie działa. Czy możesz mi pomóc! – user2047817

+0

Dodano trzecie rozwiązanie z czystym javascript @ user2047817 –

2

Oto jak to zrobić z AJAX.

$("#updatebtn").click(function() { 
    $("#updatebtn").prop("disabled", true); 
    urlToHandler = 'update.ashx'; 
      jsonData = data; 
      $.ajax({ 
       url: urlToHandler, 
       data: jsonData, 
       dataType: 'json', 
       type: 'POST', 
       contentType: 'application/json', 
       success: function (data) { 
        $("#lbl").html(data.response); 
        $("#updatebtn").prop("disabled", false); 
        //setAutocompleteData(data.response); 
       }, 
       error: function (data, status, jqXHR) { 
        alert('There was an error.'); 
        $("#updatebtn").prop("disabled", false); 
       } 
      }); // end $.ajax 
+0

w niektórych wersjach jQuery, musisz użyć '.attr ('disabled', true)'. Nie wiem, która wersja, ale wersja, której używam (minified i pakowana jako część aplikacji, nad którą pracuję) wyrzuca z 'obiektem nie obsługuje podpory ' – JoeBrockhaus

9

Po prostu w porządku pracy, w HTML:

<button type="button" id="btn_CommitAll"class="btn_CommitAll">save</button> 

Na stronie JQuery umieścić tę funkcję do przycisku Wyłącz:

function disableButton() { 
    $('.btn_CommitAll').prop("disabled", true); 
} 

Aby włączyć przycisk:

function enableButton() { 
    $('.btn_CommitAll').prop("disabled", false); 
} 

To wszystko.

22

Są dwie rzeczy, a najwyższa głosowana odpowiedź jest poprawna technicznie, jak na pytanie OP.

krótko streścić:

$("some sort of selector").prop("disabled", true | false); 

Jednakże należy używać jQuery UI (wiem, że PO nie było, ale niektórzy ludzie przyjeżdżający tu może być) wtedy, gdy będzie to wyłączyć przyciski kliknij zdarzenie to przyzwyczajenie zrobić przycisk wydaje się wyłączony zgodnie ze stylem interfejsu użytkownika.

Jeśli używasz przycisku stylem jQuery UI to powinno być włączone/wyłączone poprzez:

$("some sort of selector").button("enable" | "disable"); 

http://api.jqueryui.com/button/#method-disable

1

Działa to dla mnie:

<script type="text/javascript"> 
function change(){ 
    document.getElementById("submit").disabled = false; 
} 
</script> 
2

Jest to najprostsza sposób w mojej opinii:

// All buttons where id contains 'rbutton_' 
 
const $buttons = $("button[id*='rbutton_']"); 
 

 
//On click 
 
$buttons.click(function() { 
 
    $(this).prop('disabled', true); //disable 
 
}); 
 

 
//Enable button 
 
$('#enable').click(function(){ 
 
    $buttons.each(function(){ 
 
     $(this).prop('disabled', false); //enable 
 
    }) 
 
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<button id="rbutton_200">click</button> 
 
<button id="rbutton_201">click</button> 
 
<button id="rbutton_202">click</button> 
 
<button id="rbutton_203">click</button> 
 
<button id="rbutton_204">click</button> 
 
<button id="rbutton_205">click</button> 
 
<button id="enable">enable</button>

1

Chcę przycisk, aby wyłączyć na jakiś warunek, używam 1st rozwiązanie, ale to nie będzie działać dla mnie. Ale kiedy używam drugiej, zadziałało. Poniżej znajdują się wyjścia z konsoli przeglądarki.

1. $ ('# psl2 .btn-Kontynuuj'). Prop ("wyłączone", true)

<a class=​"btn btn-yellow btn-continue" href=​"#">​Next​</a>​ 

2. $ ('# psl2 .btn-kontynuować') .attr ("wyłączone", "disabled")

<a class=​"btn btn-yellow btn-continue" href=​"#" disabled=​"disabled">​Next​</a>​ 
20

Spróbuj

function disable(i){ 
    $("#rbutton_"+i).attr("disabled",true); 
} 
4

przycisk Wyłącz:

$('#button_id').removeAttr('disabled'); 
Powiązane problemy