0

別のラジオ ボタンが変更されたときに、入力 (タイ​​プ ラジオ) の値属性を変更しようとしています。関数を呼び出して、フォームで送信される値を変更したいと思います。

<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でこれをやろうとしましたが、同様の問題がありました。誰かがこの作業を行う方法について事前に教えてくれれば、大変感謝しています。

4

2 に答える 2

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 からさらに離すことができます。

于 2013-08-31T07:52:41.567 に答える
0

私はSumurai8に同意します-おそらく、ラジオ入力をフォーム内に配置したいだけのようです。

ただし、そうではない正当な理由がある場合は、次の行に沿って何かを実行してみてください (この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 ( <form>jsFiddle リンクに表示されているものを含む) の下のタグ内にあることだけです。

于 2013-08-31T07:59:53.363 に答える