2011-06-07 20 views
5

Bir onay kutusunun değerine bağlı olarak gizli giriş alanının değerini değiştirmeye çalışıyorum. Javascript hakkında pek bir şey bilmiyorum ama şu ana kadar sahip olduğum şey bu. Bir onay kutusunun durumuna bağlı olarak gizli girişin değerini değiştirmek için Javascript'i nasıl kullanırım?

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

işe aldım ama sadece ilk tıklamada, onay kutusu durumuna bağlı olarak değerini ayarlamak için zaten var mı? Çok daha basit bir yol olduğundan şüpheliyim ve bu konuyu karmaşıklaştırmaktan hiç şüphem yok. özniteliği "onchange" HTML bir event listener ekleyerek kullanmak yerine

cevap

5

deneyin, bu sizin için şeye açıklık olabilir ve muhtemelen uzun vadede korumak için kod kolaylaştıracak:

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

fikri olmasıdır anonim işlev, kullanıcının kutuyu işaretleyip işaretlemediğine bağlı olarak gizli alanın değerini "Kabul edildi" veya boş dizge olarak ayarlayan onay kutusunu her tıkladığında çalışır.

Bu jsFiddle, çalışan bir örneği gösterir.

+0

Merhaba, Yanıtınız için teşekkürler. Ne söylediğinizi anlıyorum ama gizli alanı güncellemek için bunu nasıl anladığımı anlamıyorum, detaylandırmanız için herhangi bir şans var mı? – Dave

+0

@Dave: Cevabımı daha güvenilir bir şekilde göstermek için güncelledim, sizin için anlamlı olup olmadığını bana bildirin. – maerics

0

checked değişkeniniz yalnızca bir kez ayarlanır, bu nedenle her zaman ınital değere eşittir. İşlevi terms() içinde taşıyın.

1
böylece fonksiyonu içine değişken atama Taşı

:

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

Turp giderilen sizin fonksiyonu

<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

onay kutularını bir form.submit() onlar kontrolsüz olduğunda ben onay kutusu tıklandığında güncellenir gizli bir alan kullanmak sunulmamış çünkü. (Ben zaten kontrol edildi eğer sayfayı işlerken onay kutusu-girişine checked özelliğini ekleyen jsp-kod atladık.)

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

İlgili konular