2013-10-03 13 views
5

Oto funkcja, która po prostu sprawdza, czy w elemencie formularza został wybrany przycisk opcji.Zatrzymaj działanie łącza, jeśli funkcja onclick zwraca wartość false

function validate_selected(element) { 
    var radios = document.getElementsByName(element); 
    var formValid = false; 

    var i = 0; 
    while (!formValid && i < radios.length) { 
     if (radios[i].checked) formValid = true; 
     i++;   
    } 

    if (!formValid) alert("Must select one before moving on!"); 
    return formValid; 
} 

Oto mój link, który chcę wyłączyć, jeśli funkcja zwraca false. Teraz link pokazuje alert, ale po ostrzeżeniu link wysyła użytkownika do przodu.

Chcę, aby łącze zostało wyłączone, jeśli funkcja zwraca wartość false.

Odpowiedz

7

Prawie dostałem to, co potrzebne, aby dodać 'powrót' w aswell funkcję:

onclick="return validate_selected('owner');" 

też mała wskazówka, dodać zerwaniu:

while (!formValid && i < radios.length) { 
    if (radios[i].checked){ 
     formValid = true; 
     break; // No need to continue any more, we've found a selected option 
    } 
    i++;   
} 

Zmieniłem twój onclick z liniowego na właściwy sposób obsługi zdarzeń i zrobiłem działające demo. Wystarczy wyjąć z onclick przycisku i dodać to:

document.getElementById('button').onclick =function(){ validate_selected('owner'); }; 

http://jsfiddle.net/WX6v7/1/ (dodano kilka radiobuttons w przykładzie)

+0

Ta druga część jest nieco niepoprawna, jego pętla while określa "while" 'formValid'. Tak więc, gdy tylko ustawimy wartość true, 'while' zostanie zakończone. Twoje podejście jest jednak lepszą praktyką. – mattytommo

+0

Nadal nie działa z dodanym zwrotem! Zmieniono czas na: while (i user2843198

+0

@matty, masz rację, tęskniłem za tą częścią. Przerwa nie jest jednak – Martijn

3

Trzeba rzeczywiście return wartość w onclick że funkcja zwracane:

onclick="return validate_selected('owner');"> 
+1

nadal nie działa ze zwrotem dodany! – user2843198

Powiązane problemy