0

我有一个由几支球队组成的梦幻棒球联盟,每支球队的名单上都有很多球员。所以,我有一个显示名册的页面。通过在下拉列表中选择条款,可以为名单上的每个球员分配一份合同。然后我需要在页面底部的文本字段中动态更新玩家的 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>

表单会加载所有合同选项,但文本字段不会更新任何内容。无论我在下拉列表中选择什么,都保持默认值。谢谢!

更新: 好的....我发现我可以在选择选项值字段中传递两个变量。我用 : 分隔合同类型和 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 循环来累积工资。

4

0 回答 0