2012-01-06 19 views
7

I pulsanti di opzione di controllo voglio automaticamente: Ho provato questo codice ma non funziona:. pulsanti radio hanno 3 valori differenti, voglio selezionare il pulsante di opzione con il valore 'pulito"pulsanti di opzione javascript controllare automaticamente

Come ?! posso controllare automaticamente i pulsanti di opzione su una pagina web Grazie

function getElements() 
    { 

    for (i=0; i<document.getElementsByTagName('input').length; i++) 
    { 
    //if (document.getElementsByTagName('input')[i].type == 'radio') 
    if(document.getElementsByTagName('input')[i].type=='radio') 
    { 
     //if (document.getElementsByTagName('input')[i].value=='clean') 
     document.getElementsByTagName('input')[i].click(); 
    } 
    } 

ho modificato il codice come segue:

for (i=0; i<document.getElementsByTagName('input').length; i++) 
    { 

    if(document.getElementsByTagName('input')[i].type=='radio') 
    { 


     if(document.getElementsByTagName('input')[i].value == "clean") 
     { 
     document.getElementsByTagName('input')[i].checked =true; 
     } 

    } 
    } 

ma non funziona ancora :(

i pulsanti di opzione sono in un iframe, può essere il motivo per cui il codice non funziona?

+1

sì, io sono consapevole di questo Manse, e il codice è fantastico ma sto facendo fatica a farlo funzionare non per colpa tua ma è mia o della mia mancanza. Accetterò la tua risposta! –

+0

sì il problema era iframe e ho corretto e tutto sta funzionando bene sul tuo codice Manse Mille grazie, sei il mio uomo! –

risposta

14

Lascia la tua radio button "nomi" renderebbe le cose molto più facili

<input type="radio" name="myradios" value="clean"/> 
<input type="radio" name="myradios" value="somethingelse"/> 

var elements = document.getElementsByName('myradios'); 
for (i=0;i<elements.length;i++) { 
    if(elements[i].value == "clean") { 
    elements[i].checked = true; 
    } 
} 

esempio di lavoro: http://jsfiddle.net/Dwzc9/

Aggiornato

getElementsByName non sembra essere supportato in tutti i IE versioni ... quindi è possibile utilizzare quanto segue in base al proprio esempio originale:

var allElems = document.getElementsByTagName('input'); 
for (i = 0; i < allElems.length; i++) { 
    if (allElems[i].type == 'radio' && allElems[i].value == 'clean') { 
     allElems[i].checked = true; 
    } 
} 

esempio di lavoro: http://jsfiddle.net/Dwzc9/2/

+0

Il tuo codice funziona ma il problema è IFrame, penso. O qualcos'altro e per questo motivo non posso eseguirlo con successo. –

3

si potrebbe provare ad impostare il "checked" attributo, invece.

var getElements = function() 
{ 
    var x = document.getElementsByTagName("input"); 
    var oldname = ''; 

    for(var i = 0; i < x.length; i++) 
    { 
     if(x[i].type == 'radio' && x[i].name != oldname && x[i].value == 'clean') 
     { 
      x[i].checked = true; 
      oldname = x[i].name; 
     } 
    } 
}; 

Il problema con questa funzione è che tenterà di controllare tutti i pulsanti di opzione, quindi se appartengono a un gruppo (che di solito è il caso), solo l'ultimo pulsante radio dal verrà selezionato ciascun gruppo . Se questa è la tua intenzione, allora è grandiosa, altrimenti pensa a come decidere quale pulsante è selezionato e spezzare il ciclo. Puoi vedere nella funzione precedente che ho deciso di selezionare solo il primo pulsante del gruppo, controllando l'attributo name dell'elemento.

Spero che questo ti aiuti!

  • Matt

UPDATE

Un altro modo per gestire questa situazione, utilizzando jQuery, sarebbe:

var getElements = function(){ 
    var oldname = ''; 
    $.each($('input[type="radio"]'), function(){ 
    if($(this).attr('name') != oldname && $(this).val() == 'clean'){ 
     $(this).checked = true; 
     oldname = this.name; 
    } 
    }); 
}; 
+1

Questo sta per spuntare un pulsante di opzione per ogni gruppo sulla pagina? l'OP vuole solo controllarli quando hanno un valore di "pulito" – ManseUK

+0

Dovrebbe. L'attributo name è il modo in cui i pulsanti radio html sono "raggruppati"."Ogni pulsante con lo stesso nome si trova in un gruppo – Matt

+0

OH, ho letto male la domanda, correggerò questo – Matt

Problemi correlati