Javascript触发时Javascript没有运行

时间:2014-03-07 19:01:45

标签: javascript php html wordpress

我有一个带有下拉菜单和一系列复选框的html表单。下拉列表有两个选项。每个选项都应该使用带有“select”标记内的onchange事件的javascript检查几个复选框。这可以100%工作,但是当我用更多的javascript触发它时失败了。 我已将其缩小到重置所有复选框以取消选中的部分。然后应该根据下拉菜单选择所需的方框,但由于未能全部取消选中它们,它们都会保持检查状态。 这是代码:

选择框:

<select name='myrp_autogroups' id='myrp_autogroups' onchange='myrp_group_selector();'>
  <option></option>

<?php
  $presets = get_option("myrp_presets");
  for ($i = 0; $i < count($presets); $i++) {
  $preset = $presets[$i];
  echo "<option value='";
  for ($b = 0; $b < count($preset[1]); $b++) {
    $checkbox = $preset[1][$b];
    echo $checkbox . ",";
  }
  echo "'";
  echo ">" . $preset[0] . "</option>";
}

update_option("myrp_presets", $presets);
?>
</select>
<input type="button" value="change" onclick="change_group();">
<script  type='text/javascript'>
    window.onload = change_group();
</script>

使用Javascript:

function myrp_group_selector()
{
  // reset everything.
  $mrjQ(".myrp_checkboxes").each(function() {
    var name = this.id.split("myrp_c_");

    if(name.length == 2) {
      document.getElementById("myrp_value_" + name[1]).disabled=true;
      document.getElementById("myrp_value_" + name[1]).value="";

      this.checked=false;
    }
  });
  if(document.getElementById("myrp_average_top") != null)
  {
    document.getElementById("myrp_average_top").checked=false;
    document.getElementById("myrp_average_value_top").value="";
  }

  if(document.getElementById("myrp_average_bottom") != null)
  {
    document.getElementById("myrp_average_value_bottom").value="";
    document.getElementById("myrp_average_bottom").checked=false;
  }

  var checkThese = document.getElementById("myrp_autogroups")[document.getElementById("myrp_autogroups").selectedIndex].value;
  var checkArray = checkThese.split(",");
  var average = "avg";

  // check the new stuff
  for(var i in checkArray)
  {
    if(checkArray[i] == average)
    {
      if(document.getElementById("myrp_average_top") != null)
      {
        document.getElementById("myrp_average_top").checked=true;
      }

      if(document.getElementById("myrp_average_bottom") != null)
      {
        document.getElementById("myrp_average_bottom").checked=true;
      }
    }
    else
    {
      document.getElementById("myrp_c_"+checkArray[i]).checked=true;
      document.getElementById("myrp_value_"+checkArray[i]).disabled=false;
    }
  }

}
function change_group() {
    select = document.getElementById('myrp_autogroups');
    if(select.value != '2,3,4,5,6,'){
        select.value = '2,3,4,5,6,';
        select.onchange();
        }
}

我已将其缩小到此部分,请记住,如果我从下拉列表中手动选择一个选项并且在由java触发时不起作用,它将完美运行:

// reset everything.
  $mrjQ(".myrp_checkboxes").each(function() {
    var name = this.id.split("myrp_c_");

    if(name.length == 2) {
      document.getElementById("myrp_value_" + name[1]).disabled=true;
      document.getElementById("myrp_value_" + name[1]).value="";

      this.checked=false;
    }
  });

1 个答案:

答案 0 :(得分:0)

错误的是:

window.onload = change_group() ; 

应该是

window.onload = change_group;