私はいくつかのチームで構成されるファンタジー野球リーグを持っており、各チームには多くの選手が名簿に登録されています。それで、名簿を表示するページがあります。ドロップダウンで期間を選択することにより、名簿上の各プレーヤーに契約を割り当てることができます。次に、ページの下部にあるテキスト フィールドでプレーヤーの base_salary を動的に更新する必要があります。チームは複数のプレーヤーを選択できるため、選択したプレーヤーの合計給与を増やすためのボックスが必要です。プレーヤーが契約を結んでいるかどうかのみを追跡する必要があり、チェックボックスの値内でプレーヤーの給与を渡すことができたときに、これをチェックボックスで動作させましたが、現在は複数の契約タイプがあるため、ドロップダウンです。したがって、私の Java 関数には参照用の古いコードがいくつかまだ含まれています。ドロップダウンが選択されたときの増分給与値。給与はデータベースから取得され、$base_salary に配置されます。前もって感謝します!!
ここに私のコードがあります(改訂)....
<form method='post' action='../keepers_updated' name='form1' id='form1'>
<select name='contracts[]' id='contracts' onchange='changeClass(this)'>
<option value=>None</option>
<option value=<php '$keeper'; ?> data-total=<php '$current_base_salary'; ?>Std.Keeper</option>
<option value=<php '$contract_1'; ?> data-total=<php '$current_base_salary'; ?>>1</option>
<option value=<php '$contract_3'; ?> data-total=<php '$current_base_salary'; ?>>3</option>
<option value=<php '$contract_5'; ?> data-total=<php '$current_base_salary'; ?>>5</option>
<option value=<php '$franchise'; ?> data-total=<php '$current_base_salary'; ?>>F Tag</option>
</select>
</td>
<td width='10px' align='center' ><php $current_teamID; ?></td>
<td width='60px' align='center' ><php $current_positionID; ?></td>
<td width='10px' align='center' width='10px' ><php $$current_base_salary; ?></td>
<td><input type='text' name='textfield' id='textfield' value=<php $$total_salary; ?> readonly />
<b>Total Keeper Salary</b></td>
<input type='hidden' name='TeamsID' value=<php $Teams_ID; ?>>
<input type='submit' value='Save keepers'>
</form>
</table>
私はJavaを突き刺しました。オプション値タグの「データ」属性に言及している投稿をどこかで見つけました。ここに適用できるかどうかはわかりませんが、試してみました...
function changeClass() {
function recalculate() {
var elem=document.getElementById("textfield");
var sum = 0;
$('#contracts').find('option:selected').each(function() {
sum += parseInt($(this).data("total"));
});
elem.value='$'+sum;
}
$('#contracts').change(ChangeClass() {
recalculate();
});
});
</script>
フォームにはすべての契約オプションが読み込まれますが、テキスト フィールドは何も更新されません。ドロップダウンで何を選択しても、デフォルト値を維持します。ありがとう!
更新: わかりました....選択オプションの値フィールドに2つの変数を渡すことができることがわかりました。契約タイプと base_salary を : で区切りました (value=$contract_1:$base_salary)。このコードを使用して値を分割することができ、機能します...
function changeClass(value) {
var textfield;
var select = document.getElementsByTagName('option');
var value_parts = value.split(':');
var count = select.length;
document.getElementById('textfield').value = value_parts[1];
return;
}
今私が抱えている問題は、給与を蓄積するための for ループを作成できるように、選択の総数を取得することです。