选择的更改事件是抛出“jQuery不是函数”错误

时间:2016-08-17 18:23:41

标签: javascript jquery

JS代码:

function banChanged(){
    $("#BanReason").on("change",function(){
        if($(this).val() == "scrammer")
            $("#BanLength").val("1week");
    });
}

HTML code:

<select id="BanReason" onchange="banChanged()">
    <option value="hack">Hack</option>
    <option value="badlang">Bad Language</option>
    <option value="scrammer">Scrammer</option>
</select>

<select id="BanLength">
    <option value="1day">1 Day</option>
    <option value="2days">3 Days</option>
    <option value="1week">1 Week</option>
</select>

JavaScript是一个不同的位置。当我单击选择更改值时,我得到这个“不是函数”错误。该脚本以内联方式工作,但需要在<script type="text/javascript" src="./test.js"></script>标记中加载。

任何人都可以帮助我吗?

2 个答案:

答案 0 :(得分:2)

$(document).ready(function() {
  $("#BanReason").on("change", function() {
    if ($(this).val() == "scrammer")
      $("#BanLength").val("1week");
  });
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>

<select id="BanReason">
  <option value="hack">Hack</option>
  <option value="badlang">Bad Language</option>
  <option value="scrammer">Scrammer</option>
</select>

<select id="BanLength">
  <option value="1day">1 Day</option>
  <option value="2days">3 Days</option>
  <option value="1week">1 Week</option>
</select>

还要确保在脚本之前加载jQuery,并且脚本的路径是正确的。 ./test.js表示您的脚本与.html文件位于同一文件夹中。

答案 1 :(得分:1)

删除由onchange()附加的内联事件,因为您已经在js代码中附加了on change事件,同时删除了函数声明,只留下ready函数包含的内容,请查看下面的示例。

希望这有帮助。

$(function(){
  $("#BanReason").on("change",function(){
    if($(this).val() === "scrammer")
      $("#BanLength").val("1week");
  });
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<select id="BanReason">
  <option value="hack">Hack</option>
  <option value="badlang">Bad Language</option>
  <option value="scrammer">Scrammer</option>
</select>

<select id="BanLength">
  <option value="1day">1 Day</option>
  <option value="2days">3 Days</option>
  <option value="1week">1 Week</option>
</select>