2011-06-07 13 views
5

मैं चेकबॉक्स के मूल्य के आधार पर एक छिपे हुए इनपुट फ़ील्ड के मान को बदलने की कोशिश कर रहा हूं। मैं जावास्क्रिप्ट के बारे में ज्यादा नहीं जानता लेकिन यह अब तक मेरे पास है।चेकबॉक्स की स्थिति के आधार पर छुपा इनपुट के मूल्य को बदलने के लिए मैं जावास्क्रिप्ट का उपयोग कैसे करूं?

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

मुझे यह काम करने के लिए मिला, लेकिन केवल पहले क्लिक पर, क्या चेकबॉक्स स्थिति के आधार पर मूल्य निर्धारित करने के लिए वैसे भी है? मुझे संदेह है कि कुछ आसान तरीका है और मुझे इस मुद्दे को जटिल बनाने में कोई संदेह नहीं है। "Onchange" विशेषता एक event listener एचटीएमएल जोड़ने के बजाय का उपयोग कर

उत्तर

5

प्रयास करें, तो यह आपके लिए चीजों को स्पष्ट हो सकता है और शायद अपने कोड आसान लंबे समय में बनाए रखने के लिए कर देगा:

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

विचार है कि है प्रत्येक बार जब उपयोगकर्ता चेकबॉक्स पर क्लिक करता है तो गुमनाम फ़ंक्शन चलाता है, जो कि छिपे हुए फ़ील्ड का मान या तो "स्वीकृत" या खाली स्ट्रिंग पर सेट करता है, इस पर निर्भर करता है कि बॉक्स चेक किया गया है या नहीं।

यह jsFiddle एक कामकाजी उदाहरण दिखाता है।

+0

हाय, आपकी प्रतिक्रिया के लिए धन्यवाद। मैं समझता हूं कि आप क्या कह रहे हैं लेकिन यह समझ में नहीं आता कि मुझे छिपे हुए क्षेत्र को अपडेट करने के लिए यह कैसे मिलता है, क्या कोई मौका है कि आप विस्तृत कर सकते हैं? – Dave

+0

@ डेव: मैंने ऐसा करने का एक और अधिक विश्वसनीय तरीका दिखाने के लिए अपना उत्तर अपडेट किया है, अगर आपको यह समझ में आता है तो मुझे बताएं। – maerics

0

आपकी चर checked केवल एक बार सेट है, इसलिए यह हमेशा आंतरिक मूल्य के बराबर होती है। इसे अपने फ़ंक्शन terms() के अंदर ले जाएं।

1

, इस प्रकार समारोह में चर काम ले जाएँ:

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

अपने कार्य

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

एक बेला में फिक्स्ड अंदर जाँच मूल्य प्राप्त - क्लिक करने की घटना का उपयोग करें।

http://jsfiddle.net/hSMbf/1/

0

क्योंकि चेक बॉक्स एक form.submit() जब वे अनियंत्रित हैं मैं एक छिपी हुई फ़ील्ड जब चेकबॉक्स पर क्लिक किया जाता है अद्यतन हो जाता है कि का उपयोग में प्रस्तुत नहीं कर रहे हैं।

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

(मैं jsp-कोड है कि जब पेज प्रतिपादन चेकबॉक्स-इनपुट करने के लिए checked संपत्ति कहते हैं कि वह पहले से जांच की गई निकाल दी हैं।)

संबंधित मुद्दे

 संबंधित मुद्दे