私は前の質問で多くの有用な助けを見つけましたが、必要な最後の部分を得ることができません。私はPHPを使ってフォームフィールドをループし、変数を使ってフィールドに固有の名前を付けます。私のフィールドの1つは「経費タイプ」です。もう一つは「費用額」です。 「マイレージ」が選択された費用であれば、自動的にマイレージレートを表示するように費用金額を希望します。私は配列の外側でこれを行うことができますが、配列では配列内の名前を正しく得ることができません。 PHPコードとフォームの残りの部分は完全に動作します。ちょうどjavascriptがトリガ/更新する適切なフィールドを見つけられません。ここでは、コードです:Javascriptは入力値の配列に基づいて選択します
<?php
$t = -1;
foreach($details as $detail)
{
$t++;
echo '<th><select name="record['.$t.'][expense]" onChange="mileage();" ><option value="">Expense</option>';
foreach($expensecoderesults as $code)
{
echo '<option value="'.$code->expense_code_id.'"';
if($code->expense_code_id == $expense_type_id){echo 'selected="selected" ';}
echo '>'.$code->expense_code_name.'</option>';
}
echo '</select></th></tr>';
echo '<th><input type="number" "step=".01" name="record['.$t.'][amount]" /></th>';
}
?>
<script language="javascript" type="text/javascript">
function mileage()
{
var myForm = document.forms.edit_emp_exp;
var myControls = myForm.elements['record[][expense]'];
var myAmount = myForm.elements['record[][amount]'];
for (var i = 0; i < myControls.length; i++)
{
if(myControls.value == 28)//28 is the id of "mileage" expense
{myAmount.value=".54";}
}
}
元のコードに何が間違っていたか、どのように修正したか説明してください。 – Barmar
残念ながら、これは機能しませんでした。もしこれが私のコード全体であったとしても、私は複数の入力フィールドを持っていて、最初の入力フィールドを更新しました。私はjQueryやjavascript(明らかに)についてよく分かりませんので、私はそれについても見ていきたいと思います。私は今、PHPループにjavascriptを追加して、$ t変数を要素名に渡して調べていますが、最初のフィールドでのみ動作しています。 – BillyB
jsFiddle:https://jsfiddle.net/gcgyu4uk/もご確認ください。それはあなたが期待していることですか? –