根据单选按钮选择显示/隐藏输入字段

Posted

技术标签:

【中文标题】根据单选按钮选择显示/隐藏输入字段【英文标题】:Display/Hide input fields based on radio button selection 【发布时间】:2021-10-01 23:17:14 【问题描述】:

我是 JS 和学习的新手。请帮助我更正代码。

输入是:

    单选按钮-1;单选按钮 2; 输入字段-set-1;输入字段集 2;输入字段提交。

我想要实现的是:

在页面加载时,只会显示单选按钮 1 和单选按钮 2。点击 radio-button-1 时会显示 input-fields-set-1 和 input-field-submit,但点击 radio-button-2 时会显示 input-fields-set-2 和 input-field-submit。

下面给出了完整的代码。在http://jsfiddle.net/ 上运行它们时,它运行良好,但在网站上单击任何单选按钮时没有出现任何内容。我已将代码上传到https://testing2601.000webhostapp.com/ 用于测试目的,但它无法正常工作。

另外请注意,set-1 和 set-2 中的所有输入字段都是必填字段。

来自 .js 和 .html 文件的完整代码 -

function ageCheck() 
    if  (document.getElementById('below').checked) 
        document.getElementById('ifBelow').style.display = 'block';
        document.getElementById('ifAbove').style.display = 'none';
        document.getElementById('ifChecked').style.display = 'block';
    
    else if (document.getElementById('above').checked) 
        document.getElementById('ifBelow').style.display = 'none';
        document.getElementById('ifAbove').style.display = 'block';
        document.getElementById('ifChecked').style.display = 'block';
    
    else    
        document.getElementById('ifAbove').style.display = 'none';
        document.getElementById('ifBelow').style.display = 'none';
        document.getElementById('ifChecked').style.display = 'none';
    
<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta charset="utf-8" />

</head>
<body >
<div>
  <form method="post" name="childDetails" action="example.php">
    <div class="radioB">
      <div class="a">
        <input type="radio" onclick="javascript:ageCheck();" id="below" name="age" >
        <label for="below">Age of my child is below 4 years.</label>
      </div>
      <div class="a">
        <input type="radio" onclick="javascript:ageCheck();" id="above" name="age" >
        <label for="above">Age of my child is above 4 years.</label>
      </div>                                    
    </div> 
    <div id="ifBelow" class="set-1" style="display: none">
      <div>
        <input type="number" id="dob" name="dob" placeholder="DOB of Child in mmddyy" required />
      </div>                                        
      <div>
        <input type="text" id="name" name="name" placeholder="Name of the child" required />
      </div>
      <div>
        <input type="email" id="email" name="email" placeholder="Your email" />
      </div>
    </div>
    <div id="ifAbove" class="set-2" style="display: none">
      <div>
        <input type="number" id="age" name="age" placeholder="Age of your child" required />
      </div>    
      <div>
        <input type="text" id="name2" name="name2" placeholder="Name of the child" required />
      </div>
      <div>
        <input type="text" id="hobby" name="hobby" placeholder="Hobby of your child" required />
      </div>
      <div>
        <input type="email" id="email-2" name="email-2" placeholder="Your email" />
      </div>
    </div>
    <div id="ifChecked" class="set-3" style="display: none">
      <div class="set-3">
        <input type="checkbox" id="proud" name="proud" required>
        <label for="proud">I am a proud parent.</label>
      </div>                                    
      <div>
        <input type="submit" name="submit" value="Submit" class="primary" />
      </div>
    </div>
  </form>
</div>

<script type="text/javascript" src="/assets/js/main.js"></script>       

</body>
</html>

【问题讨论】:

在您的主机上,您没有包含 jQuery。这导致它失败。但在相关说明中,将您的函数从 (ffunction($) ... ) (jQuery) 块中取出,以便它在您的 html 所需的全局范围内可用 @AdityaParab,我已经做到了,但是没有用。请您指导我完整的js代码! 它在your project中完美运行 是的,我终于可以做到了。谢谢。 【参考方案1】:

当我在 https://testing2601.000webhostapp.com/ 查看您的代码时,我看到您的 javascript 代码(来自 main.js)如下,如果是这种情况,则意味着 ageCheck 未附加到全局,因此未为您的 HTML 定义使用,这是你为什么它不工作的根本原因。

(function($)     
    
    function ageCheck() 
    if  (document.getElementById('below').checked) 
        document.getElementById('ifBelow').style.display = 'block';
        document.getElementById('ifAbove').style.display = 'none';
        document.getElementById('ifChecked').style.display = 'block';
    
    else if (document.getElementById('above').checked) 
        document.getElementById('ifBelow').style.display = 'none';
        document.getElementById('ifAbove').style.display = 'block';
        document.getElementById('ifChecked').style.display = 'block';
    
    else    
        document.getElementById('ifAbove').style.display = 'none';
        document.getElementById('ifBelow').style.display = 'none';
        document.getElementById('ifChecked').style.display = 'none';
    
    
)(jQuery);

【讨论】:

请您更正代码并在此处分享!我会很感激的。

以上是关于根据单选按钮选择显示/隐藏输入字段的主要内容,如果未能解决你的问题,请参考以下文章

根据单选按钮选择显示剩余视图

基于单选按钮选择使用 CSS 显示/隐藏链接

基于单选按钮选择的访问选项卡控件

根据表格数据隐藏和显示单选按钮

根据另一个表单字段(单选按钮)预填充值 HTML 表单输入

基于 ACF 单选按钮输入的功能隐藏 DIV