it-swarm.dev

كيفية إظهار وإخفاء حقول الإدخال بناءً على اختيار زر الراديو

إليك الرمز لإظهار حقول الإدخال حسب اختيار الراديو مثل:

النصي

<script type="text/javascript">

function yesnoCheck() {
    if (document.getElementById('yesCheck').checked) {
        document.getElementById('ifYes').style.visibility = 'visible';
    } else {
        document.getElementById('ifYes').style.visibility = 'hidden';
    }

</script>

HTML

Yes
<input type="radio" onclick="javascript:yesnoCheck();" name="yesno" id="yesCheck"/>No
<input type="radio" onclick="javascript:yesnoCheck();" name="yesno" id="noCheck"/>
<br>
<div id="ifYes" style="visibility:hidden">If yes, explain:
    <input type='text' id='yes' name='yes'/>
    <br>What can we do to accommodate you?
        <input type='text' id='acc' name='acc'/>
</div>
   other 3
<input type='text' id='other3' name='other3'>
<br>
    other 4
<input type='text' id='other4' name='other4'>
<br>

ومع ذلك ، أود إخفاء حقول الإدخال (مثل الصورة) ، وجعلها لا تستخدم أي مساحة حتى يتم تحديد زر الاختيار ، وعند تحديد الراديو ، قم بإظهارها بتأثير الخبو ...

هنا الكمان :

enter image description here

34
cMinor

استبدل كل مثيلات visibility النمط بـ display

display:none //to hide
display:block //to show

هنا jsfiddle المحدثة: http://jsfiddle.net/QAaHP/16/

يمكنك القيام بذلك باستخدام وظائف Mootools أو jQuery للتمرير لأعلى/لأسفل ولكن إذا كنت لا تحتاج إلى تأثير الحركة ، فمن المحتمل أن يكون أكثر مما تحتاجه.

عرض CSS هو نهج أسرع وأكثر بساطة.

35
Learner
***This will work.........
<!DOCTYPE html>
<html>
<head>
<script type="text/javascript">
 window.onload = function() {
    document.getElementById('ifYes').style.display = 'none';
    document.getElementById('ifNo').style.display = 'none';
}
function yesnoCheck() {
    if (document.getElementById('yesCheck').checked) {
        document.getElementById('ifYes').style.display = 'block';
        document.getElementById('ifNo').style.display = 'none';
        document.getElementById('redhat1').style.display = 'none';
        document.getElementById('aix1').style.display = 'none';
    } 
    else if(document.getElementById('noCheck').checked) {
        document.getElementById('ifNo').style.display = 'block';
        document.getElementById('ifYes').style.display = 'none';
        document.getElementById('redhat1').style.display = 'none';
        document.getElementById('aix1').style.display = 'none';
   }
}
function yesnoCheck1() {
   if(document.getElementById('redhat').checked) {
       document.getElementById('redhat1').style.display = 'block';
       document.getElementById('aix1').style.display = 'none';
    }
   if(document.getElementById('aix').checked) {
       document.getElementById('aix1').style.display = 'block';
       document.getElementById('redhat1').style.display = 'none';
    }
}
</script>
</head>
<body>
Select os :<br>
windows
<input type="radio" onclick="javascript:yesnoCheck();" name="yesno" id="yesCheck"/>Unix
<input type="radio" onclick="javascript:yesnoCheck();" name="yesno" id="noCheck"/>
<br>
<div id="ifYes" style="display:none">
Windows 2008<input type="radio" name="win" value="2008"/>
Windows 2012<input type="radio" name="win" value="2012"/>
</div>
<div id="ifNo" style="display:none">
Red Hat<input type="radio" name="unix" onclick="javascript:yesnoCheck1();"value="2008" 

id="redhat"/>
AIX<input type="radio" name="unix" onclick="javascript:yesnoCheck1();"  
value="2012" id="aix"/>
</div>
<div id="redhat1" style="display:none">
Red Hat 6.0<input type="radio" name="redhat" value="2008" id="redhat6.0"/>
Red Hat 6.1<input type="radio" name="redhat" value="2012" id="redhat6.1"/>
</div>
<div id="aix1" style="display:none">
aix 6.0<input type="radio" name="aix" value="2008" id="aix6.0"/>
aix 6.1<input type="radio" name="aix" value="2012" id="aix6.1"/
</div>
</body> 
</html>***
7
radhika

يمكنك القيام به مع خطوة بسيطة جدا

$(':radio[id=radio1]').change(function() {
   $("#yes").removeClass("none");
   $("#no").addClass("none");


});
$(':radio[id=radio2]').change(function() {
   $("#no").removeClass("none");
   $("#yes").addClass("none");

});
5
Shube

ستحتاج أيضًا إلى تعيين ارتفاع العنصر إلى 0 عندما يكون مخفيًا. واجهت هذه المشكلة أثناء استخدام jQuery ، كان حلي هو ضبط الارتفاع والتعتيم على 0 عندما يكون مخفيًا ، ثم تغيير الارتفاع إلى العتامة والتعتيم على 1 عندما يكون غير مخفي.

أود أن أوصي بالنظر في مسج. من السهل جدًا التقاطها وستسمح لك بعمل أشياء مثل هذه بسهولة أكبر.

$('#yesCheck').click(function() {
    $('#ifYes').slideDown();
});
$('#noCheck').click(function() {
    $('#ifYes').slideUp();
});

من الأفضل قليلاً للأداء تغيير CSS باستخدام jQuery واستخدام الرسوم المتحركة CSS3 لتنفيذ القائمة المنسدلة ، ولكن هذا أيضًا أكثر تعقيدًا. يجب أن يعمل المثال أعلاه ، لكنني لم أختبره.

3
Carl Vitullo

استخدم العرض: لا شيء/كتلة ، بدلاً من الرؤية ، وأضف هامشًا/أعلى أسفل للمساحة التي تريد رؤيتها فقط عند عرض المدخلات

 function yesnoCheck() {
        if (document.getElementById('yesCheck').checked) {
           document.getElementById('ifYes').style.display = 'block';
        } else {
           document.getElementById('ifYes').style.display = 'none';
        }
    }

وخط html لعلامة ifYes

<div id="ifYes" style="display:none;margin-top:3%;">If yes, explain:
2
Zale

استخدم display:none لإظهار العناصر ، ثم باستخدام JQuery يمكنك استخدام fadeIn() و fadeOut() لإخفاء/إخفاء العناصر.

http://www.w3schools.com/jquery/jquery_fade.asp

1
pinmonkeyiii

يؤثر استخدام الخاصية visibility فقط على رؤية العناصر في الصفحة ؛ سيظلون هناك في تخطيط الصفحة. لإزالة العناصر بالكامل من الصفحة ، استخدم خاصية display.

display:none // for hiding
display:block // for showing

تأكد من تغيير ملف css لاستخدام العرض بدلاً من الرؤية أيضًا.

بالنسبة إلى javascript (هذه ليست jQuery) ، تأكد من إخفاء الخيارات افتراضيًا عند تحميل الصفحة:

<script type="text/javascript">
    window.onload = function() {
        document.getElementById('ifYes').style.display = 'none';
    }

    function yesnoCheck() {
        if (document.getElementById('yesCheck').checked) {
            document.getElementById('ifYes').style.display = 'block';
        } 
        else {
            document.getElementById('ifYes').style.display = 'none';
        }
    }

</script>

إذا لم تكن قد فعلت ذلك بالفعل ، فإنني أوصي بإلقاء نظرة على مسج. رمز jQuery أكثر وضوحًا وأسهل في الكتابة والفهم.

http://www.w3schools.com/jquery/default.asp

1
Dolchio