【问题标题】:radio button change visible input fields单选按钮更改可见输入字段
【发布时间】:2013-02-04 20:11:45
【问题描述】:

我正在尝试为个人和公司制定单独的公式

如果访问者选中“个人”单选按钮,它将显示一个表单

如果访问者选中“公司”单选按钮,它将显示不同的表单

 <fieldset>
                    <input type="radio" name="tipo_cadastro" value="individual_form" id="individual_form" style="margin:0px !important">
                    <strong>Individual Form</strong><br/>

                    <input type="radio" name="tipo_cadastro" value="corporation_form" id="corporation_form" style="margin:0px !important">
                    <strong>Corporation Form</strong>

            <!-- If Individual Form is checked -->
            <legend>Personal Data</legend>
            <label for="Name">Full Name</label>
            <input id="Name" type="text" />
            <label for="City">City</label>
            <input id="City" type="text" />
            <label for="Email">Email</label>
            <input id="Email" type="text" />

            <!-- If Corporation Form is checked -->
            <legend>Corporation Data</legend>
            <label for="Name">Name</label>
            <input id="Name" type="text" />
            <label for="City">City</label>
            <input id="City" type="text" />
            <label for="Email">Email</label>
            <input id="Email" type="text" />

        </fieldset>

Ps:因为我的其他javascript,除了现有的,我不能使用其他&lt;fieldset&gt;

【问题讨论】:

    标签: forms hide show radio


    【解决方案1】:

    您需要在字段周围包裹一些东西来显示/隐藏,即使只是带有 ID 的 &lt;div&gt; 标记。

    然后,对于您的单选按钮,您需要添加 onchangeonmouseup 事件处理程序(以说明人们要么点击更改值,要么使用他们的键盘)。 例如。

    <script type="text/javascript">
    function onchange_handler(obj, id) {
        var other_id = (id == 'personal')? 'corporate' : 'personal';
        if(obj.checked) {
            document.getElementById(id + '_form_fields').style.display = 'block';
            document.getElementById(other_id + '_form_fields').style.display = 'none';
        } else {
            document.getElementById(id + '_form_fields').style.display = 'none';
            document.getElementById(other_id + '_form_fields').style.display = 'block';
        }
    }
    </script>
    <fieldset>
        <input type="radio" name="tipo_cadastro" value="individual_form" id="individual_form" style="margin:0px !important" onchange="onchange_handler(this, 'personal');" onmouseup="onchange_handler(this, 'personal');">
        <strong>Individual Form</strong><br/>
    
        <input type="radio" name="tipo_cadastro" value="corporation_form" id="corporation_form" style="margin:0px !important" onchange="onchange_handler(this, 'corporate');" onmouseup="onchange_handler(this, 'corporate');">
        <strong>Corporation Form</strong>
    
        <!-- If Individual Form is checked -->
        <div id="personal_form_fields">
            <legend>Personal Data</legend>
            <label for="Name">Full Name</label>
            <input id="Name" type="text" />
            <label for="City">City</label>
            <input id="City" type="text" />
            <label for="Email">Email</label>
            <input id="Email" type="text" />
        </div>
    
        <!-- If Corporation Form is checked -->
        <div id="corporate_form_fields" style="display: none;">
            <legend>Corporation Data</legend>
            <label for="Name">Name</label>
            <input id="Name" type="text" />
            <label for="City">City</label>
            <input id="City" type="text" />
            <label for="Email">Email</label>
            <input id="Email" type="text" />
        </div>
    </fieldset>
    

    【讨论】:

    • 对于我所看到的,它将 display:none 更改为阻止,但不反转
    • 不确定您是否看到我放在那里的更完整的示例?我将它移到一个 javascript 函数中,以显示相关字段并隐藏不相关的字段(代码的第一位仅显示)。很高兴你成功了。
    猜你喜欢
    • 2019-01-18
    • 1970-01-01
    • 2011-05-18
    • 1970-01-01
    • 1970-01-01
    • 2021-08-12
    • 2010-11-22
    • 2012-01-13
    • 2013-05-13
    相关资源
    最近更新 更多