在输入无线电标签中调用javascript函数的问题

时间:2013-08-31 04:27:15

标签: php javascript html forms input

当我更改另一个单选按钮时,我正在尝试更改输入(类型无线电)中的value属性我想调用一个函数并更改表单中发送的值:

<table border ='1'>
    <tr>
        <th colspan='2'>Thank You</th>
    </tr>
    <tr> 
        <td>
            <input type='radio' name='Choice' value=5 onchange="changeAmount('5');">
        </td>
        <td>
            I
        </td>
    </tr>
    <tr>
        <td>
            <input type='radio' name='Choice' value=10 onchange="changeAmount('10');">
        </td>                            
        <td>
            $10 
        </td>
    </tr>
    <tr>
        <td>
            <input type='radio' name='Choice' value=20 onchange="changeAmount('20');">
        </td> 
        <td>
            $20
        </td>
    </tr>
</table>

<form action="insertPageHere" method="post" target="_top">   

function changeAmount(value){
    if (value == 5)
    document.write("<input type='hidden' name='amount' value='5'>");
    else if (value == 10)
    document.write("<input type='hidden' t' value='10'>");
    else
    document.write("<input type='hidden' name='t' value='20'>");

}
</script>


</form>

我试过用php做这个,我遇到了类似的问题,如果有人能提前告诉我如何获得这项工作,那将非常感谢谢谢。

2 个答案:

答案 0 :(得分:1)

这正是表单的设计目标。您没有理由使用javascript添加或更改隐藏的输入字段来传递此信息,因为如果您将其放在表单标记之间,这将完全相同。

<form>
  <input type='radio' name='amount' value="5"> 5 <br/>
  <input type='radio' name='amount' value="10"> 10 <br/>
  <input type='radio' name='amount' value="20"> 20
</form>

旁注:不建议使用表格作为标记,在这种情况下也不需要。上面的代码将完全相同,如果需要,您可以为单选按钮添加一个边距,以便从5,10和20中分隔更多。

答案 1 :(得分:0)

我同意Sumurai8 - 听起来你可能只是想将你的无线电输入放在一个表格中。

如果有充分理由不是这样的话,那么下面几行中的内容(请参阅this jsFiddle中的操作 - 注意JS只是在脚本标记中附加到HTML中,还要注意我已经整理了一下你的HTML:

(function() {
    function changeAmount(element) {
        var amountElement = document.getElementById('amount');
        var amount = element.value;
        amountElement.value = amount;
    }

    var choices = document.getElementsByName('Choice');
    for (var i=0; i < choices.length; i++) {
        var choice = choices[i];
        choice.onchange = function() { changeAmount(this); }
    }
})();

您只需要在<script type="text/javascript">标记中,在所有HTML下方(包括jsFiddle链接中显示的<form>)。