2011-06-07 12 views
5

Próbuję zmienić wartość ukrytego pola wprowadzania, w zależności od wartości pola wyboru. Nie znam się na JavaScript, ale to jest to, co do tej pory.Jak używać JavaScript do zmiany wartości ukrytego wejścia w zależności od stanu pola wyboru?

<input type="hidden" value="" id="delterms" name="O_" /> 
<input type="checkbox" id="checkbox" onchange="terms()" /> 
<script type="text/javascript"> 
var checked = document.getElementById('checkbox').checked; 
    function terms() { 
    if (checked==false) 
    { 
    document.getElementById('delterms').value='' 
    } 
    else 
    { 
    document.getElementById('delterms').value='Accepted' 
    } 
} 
</script> 

mam go do pracy, ale tylko od pierwszego kliknięcia, czy jest tak, aby ustawić wartość w zależności od statusu pole wyboru? Podejrzewam, że jest o wiele prostszy sposób i nie mam wątpliwości co do komplikowania problemu.

Odpowiedz

5

spróbować dodać event listener zamiast używać HTML „onchange” atrybutu, to może wyjaśnić rzeczy dla ciebie i prawdopodobnie będzie uczynić Twój kod łatwiejsze do utrzymania w dłuższej perspektywie:

<input type="hidden" id="delterms" value="" name="O_" /> 
<input type="checkbox" id="checkbox" /> 
<script type="text/javascript"> 
    var checkbox = document.getElementById('checkbox') 
    , hidden = document.getElementById('delterms'); 
    checkbox.addEventListener('change', function() { 
    hidden.value = (this.checked) ? 'Accepted' : ''; 
    }, false); 
</script> 

Chodzi o to, że anonimowa funkcja jest uruchamiana za każdym razem, gdy użytkownik kliknie pole wyboru, które ustawia wartość ukrytego pola na "Zaakceptowany" lub pusty ciąg, w zależności od tego, czy pole jest zaznaczone.

Ten jsFiddle pokazuje działający przykład.

+0

Witam, dzięki za odpowiedź. Rozumiem, co mówisz, ale nie rozumiesz, jak mogę to zmienić, aby ukryć ukryte pole, czy jest jakaś szansa, abyś mógł je rozwinąć? – Dave

+0

@Dave: Zaktualizowałem swoją odpowiedź, aby pokazać bardziej wiarygodny sposób robienia tego, daj mi znać, jeśli ma to dla ciebie sens. – maerics

0

Twoja zmienna checked jest ustawiona tylko raz, więc zawsze jest równa wartości początkowej. Przenieś go do swojej funkcji terms().

1

Przesuń zmiennej przypisanie do funkcji, a więc:

function terms() { 
    var checked = document.getElementById('checkbox').checked; 
    if (checked==false) 
0

uzyskać sprawdzone wartości wewnątrz funkcji

<script type="text/javascript"> 

     function terms() { 
     var checked = document.getElementById('checkbox').checked; 
     if (checked==false) 
     { 
     document.getElementById('delterms').value='' 
     } 
     else 
     { 
     document.getElementById('delterms').value='Accepted' 
     } 
    } 
    </script> 
0

Ponieważ pola wyboru nie są przekazywane w form.submit(), gdy są one zaznaczone używam ukryte pole, które zostanie zaktualizowany, gdy pole jest kliknięty.

<input type="hidden" id="chbx" value="" name="0_"> 
<input type="checkbox" id="__chbx" 
    onclick="document.getElementById('chbx').value = 
      document.getElementById('__chbx').checked;"/> 

(mam pominąć JSP kod, który dodaje właściwość checked do checkbox-input, jeśli został już sprawdzony podczas renderowania strony.)

Powiązane problemy