2013-02-27 19 views
247

La mia pagina crea più pulsanti come id = 'rbutton_"+i+"'. Qui di seguito è il mio codice:Pulsante Disattiva in jQuery

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

in JavaScript

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

Ma non disattiva il mio tasto quando clicco su di esso.

+6

'RButton _ "+ i +"' non è un documento di identità valido:

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

pulsante Attiva. –

+0

Come posso specificare l'ID. Si sta creando nel mio javascript all'interno di un ciclo for. – user2047817

+0

Che ne dici di creare un jsFiddle in modo che possiamo vedere cosa stai facendo? – j08691

risposta

477

Usa .prop invece (e ripulire la stringa di selezione):

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

HTML generato:

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

Ma l'approccio "best practice" è quello di utilizzare evento JavaScript vincolanti e this invece:

$('.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

Ecco un piccolo violino che ho creato. Per favore lasciami quello che sto facendo male. http://jsfiddle.net/2Nfu4/3/ – user2047817

+0

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

+0

OK. Ha funzionato in No Wrap - in Head..Mi posso chiedere perché? Potrebbe essere questo qualcosa di simile, non sto facendo questo nel mio codice reale !! – user2047817

27

Prova di questo codice:
HTML

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

funzione

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

Altra soluzione con jQuery

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

DEMO


Altra soluzione pura 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 modifica la mia risposta –

+0

La seconda funzione .click() funziona perfettamente nella demo. Ma devo usare il metodo separato come menzionato nella tua prima soluzione ma non funziona. Puoi aiutarmi per favore !! – user2047817

+0

Aggiunta una terza soluzione con javascript puro @ user2047817 –

2

Ecco come si fa con l'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

in alcune versioni di jQuery, è necessario utilizzare '.attr ('disabled', true)'. Non so quale, ma la versione che devo usare (minificata e raggruppata come parte dell'app a cui sto lavorando) si getta su con 'object non supporta prop ' – JoeBrockhaus

9

Semplicemente è un lavoro bene, in HTML:

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

Nel lato JQuery messo questa funzione per pulsante Disattiva:

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

Per abilitare il tasto:

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

È tutto.

22

Ci sono due cose qui, e la risposta più votata è tecnicamente corretta secondo la domanda dei PO.

brevemente riassunti come:

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

Tuttavia si dovrebbe utilizzare jQuery UI (so che il PO non era ma alcune persone che arrivano qui potrebbe essere), allora, mentre questo sarà disabilitare i pulsanti evento Click si suole fare il pulsante appare disabilitato secondo lo stile dell'interfaccia utente.

Se si utilizza un pulsante in stile jQuery UI allora dovrebbe essere attivata/disattivata tramite:

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

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

1

Questo funziona per me:

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

Questo è il più semplice a mio avviso:

// 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

voglio pulsante per disattivare a una certa condizione, sto usando prima soluzione, ma non funziona per me. Ma quando uso il 2 ° ha funzionato. In basso sono uscite dalla console del browser.

1. $ ('# PSL2 .btn-Continua'). PROP ("disabile", true)

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

2. $ ('# PSL2 .btn-continua') .attr ("disabile", "disabile")

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

Prova questo

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

pulsante Disattiva:

$('#button_id').removeAttr('disabled'); 
Problemi correlati