动态javascript / php表单,无线电创建第二个字段

时间:2012-05-25 20:23:48

标签: javascript forms textbox radio-button dynamic-forms

到目前为止,我的代码中有一点'出牙'的问题

<form name="job_app">
    Source?<br/>
        <input type="radio" name="source" value="GAZ" id="GAZ" /> Stonoway Gazette <br/>
        <input type="radio" name="source" value="JCP" id="JCP" /> Job Center <br/>
        <input type="radio" name="source" value="WOM" id="WOM" /> Word of Mouth <br/><br/>

    <script language="text/JavaScript">
        if (document.job_app.source.GAZ.checked){
            document.write='Issue <br/><input type="text" name="issue" /><br/><br/>';
        }
        else if (document.job_app.source.JCP.checked){
            document.write='Ref <br/><input type="text" name="ref" /><br/><br/>';
        }
        //word of mouth has no additional input so there is no if statement for it
    </script>
</form>

我想要做的是根据选择的单选按钮创建(或取消隐藏)问题或参考文本框,而不创建多个文本框。

如果这是一个菜鸟错误,给我带来任何不便,感到很抱歉,我以前从未使用过Java,也没有类似的语言。

这是截至2012年5月26日07:15的工作代码,感谢Amy McCrobie。 它已经经历了一些编辑,因为Amy的版本(见下文)我已经将所有脚本移到了表单之上,以便更容易添加下面的几个字段,添加了口碑的声明,省略了<head>,因为它是索引的一部分。 php和meta.php虽然这是for form.php,添加了一个spacer并使函数名更具体。

的index.php

<!DOCTYPE html
    PUBLIC "-//W3C//DTD XHTML 1.1//EN"
    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html>
    <head>
        <?php
            include './meta.php';
        ?>
    </head>
    <?php
        /*if(isset($_POST['submit'])){
            include './submit.php';
        }
        else{*/
            include './form.php';
        //}
    ?>
</html>

meta.php

<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=Edge,chrome=1" />
<meta http-Equiv="Cache-Control" Content="no-cache" />
<meta http-Equiv="Pragma" Content="no-cache" />
<meta http-Equiv="Expires" Content="0" />
<title>job_app</title>
<link rel="StyleSheet" type="text/css" href="./style.css"/>

form.php的

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7/jquery.min.js"></script>
<script type="text/javascript">
$(document).ready(function(){
    $("#issueEl").hide();
    $("#refEl").hide();
});
    function showHide_source(){
        if (document.getElementById('GAZ').checked)
        {
            document.getElementById('issueEl').style.display = 'block';
            document.getElementById('refEl').style.display = 'none';
            document.getElementById('src_spEl').style.display = 'none';
        } 
        if (document.getElementById('JCP').checked)
        {
            document.getElementById('issueEl').style.display = 'none';
            document.getElementById('refEl').style.display = 'block';
            document.getElementById('src_spEl').style.display = 'none';
        }
    if (document.getElementById('WOM').checked)
        {
            document.getElementById('issueEl').style.display = 'none';
            document.getElementById('refEl').style.display = 'none';
            document.getElementById('src_spEl').style.display = 'block';
        }
    }
</script>
<form name="job_app" action="" method="post"> 
    Source?<br/> 
        <input type="radio" name="source" value="GAZ" id="GAZ" onChange="showHide_source()" /> Stonoway Gazette <br/> 
        <input type="radio" name="source" value="JCP" id="JCP" onChange="showHide_source()" /> Job Center <br/> 
        <input type="radio" name="source" value="WOM" id="WOM" onChange="showHide_source()" /> Word of Mouth <br/><br/> 
    <div class="hideable" id="issueEl">Issue <br/><input type="text" name="issue" /><br/><br/></div>
    <div class="hideable" id="refEl">Ref <br/><input type="text" name="ref" /><br/><br/></div>
    <div class="hideable" id="src_spEl"></div>
    rest of form        
    <input...
     .../>
</form>

的style.css

div.hideable{
    height: 62px;
}

2 个答案:

答案 0 :(得分:2)

试试这个:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
    <meta http-equiv="Content-type" content="text/html; charset=utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=Edge,chrome=1">
    <meta http-Equiv="Cache-Control" Content="no-cache">
    <meta http-Equiv="Pragma" Content="no-cache">
    <meta http-Equiv="Expires" Content="0">
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7/jquery.min.js"></script>
    <script type="text/javascript">
        $(document).ready(function(){
            $("#issueEl").hide();
            $("#refEl").hide();
        });
    </script>
    <title>Test</title>
</head>
<body>
<form name="job_app" action="" method="post"> 
    Source?<br/> 
        <input type="radio" name="source" value="GAZ" id="GAZ" onChange="showHide()" /> Stonoway Gazette <br/> 
        <input type="radio" name="source" value="JCP" id="JCP" onChange="showHide()" /> Job Center <br/> 
        <input type="radio" name="source" value="WOM" id="WOM" onChange="showHide()" /> Word of Mouth <br/><br/> 
        <div id="issueEl">Issue <br/><input type="text" name="issue" /><br/><br/></div>
        <div id="refEl">Issue <br/><input type="text" name="ref" /><br/><br/></div>
</form>
<script type="text/javascript">
function showHide(){
    if (document.getElementById('GAZ').checked)
    {
        document.getElementById('issueEl').style.display = 'block';
        document.getElementById('refEl').style.display = 'none';
    } 
    if (document.getElementById('JCP').checked)
    {
        document.getElementById('issueEl').style.display = 'none';
        document.getElementById('refEl').style.display = 'block';
    }
}
</script>
</body>
</html>

答案 1 :(得分:0)

我建议使用jQuery,这并不难学,事实上我发现它比基本的javascript更容易 我也会去两个隐藏的文本框的路径,然后通过jQuery显示它们

现在我认为如果用户选中一个单选按钮,则会出现另外两个文本框

并添加了jQuery(就像在页面顶部包含sript一样简单,你的代码会更像这样......

<form name="job_app"> 
    Source?<br/> 
        <input id="GAZ" type="radio" name="source" value="GAZ" id="GAZ" /> Stonoway Gazette <br/> 
        <input id="JCP" type="radio" name="source" value="JCP" id="JCP" /> Job Center <br/> 
        <input id="WOM" type="radio" name="source" value="WOM" id="WOM" /> Word of Mouth <br/><br/> 
        Issue <br/><input id="issue" type="text" name="issue" /><br/><br/>
        Issue <br/><input id="ref" type="text" name="ref" /><br/><br/>

    <script language="text/JavaScript">

        $("#issue").css("display","none"); 
        $("#ref").css("display","none"); 

        if ($("#GAZ").checked){ 
            $("#issue").css("display","inline"); 
            $("#ref").css("display","none"); 

        } 
         if ($("#JCP").checked){ 
            $("#issue").css("display","none"); 
            $("#ref").css("display","inline"); 

        } 
        //word of mouth has no additional input so there is no if statement for it 
    </script> 
</form>