【问题标题】:Dropdown list, jquery selection throwing "" not defined error下拉列表,jquery 选择抛出“”未定义错误
【发布时间】:2026-01-12 11:50:01
【问题描述】:

使用以下代码时,我收到了SelectChanged is not defined 消息。对于我的生活,我不知道为什么,因为我以前用过这个:

jQuery

jQuery("#name").on("change", function() {
   alert(this.value); 
});

下拉菜单

echo('<td class="table-font"><select id="name" onchange="SelectChanged(this)">');
foreach($Staff_On_Duty as $person){         
    $sf_name_option=$person->Staff_First_Name;
    $sl_name_option=$person->Staff_Last_Name;
    echo("<option value = $sf_name_option&nbsp;$sl_name_option");
    if (($sf_name_option == $sf_name) && ($sl_name_option == $sl_name)) echo (" selected");
    echo(">$sf_name_option&nbsp;$sl_name_option</option>"); 
}
echo("</select></td>");

是的,我知道上述显示菜单的方法不是最好的,我正在努力获得我需要的功能,然后可以通过分离 HTML 和 PHP 等使其更好

【问题讨论】:

  • onchange 正在寻找一个全局声明的函数SelectChanged(),与 jQuery 事件监听器无关。请注意,您在 jQuery 选择器中还有一个错字,应该是 jQuery("#name").on(...
  • 创建此函数SelectChanged() 或删除它并使用选定的 id name
  • 谢谢。所以我从select 中取出onchange 并保持原样。现在它什么都不做。没有错误等。我错过了什么吗?
  • @dean 我按照上面的方法尝试过,但我也将 JS 包含在 SelectChanged 函数中,但结果相同 - 没有

标签: php jquery dropdown onchange


【解决方案1】:

你试图做同样的事情两次。

您可以使用onchange=function() 内联调用函数,也可以使用$(elem).on('change', function() {}) 添加JQuery 事件侦听器。

您的代码实际上正在运行(使用 jquery 事件侦听器),但您在尝试运行内联函数时也遇到了错误。没有定义内联函数(即,更改SELECT时,它试图找到一个名为SelectChanged但由于它尚未定义的函数您收到错误)。

下面的示例显示了这两种方法的功能。


// Add a jquery event listener to the element with the id name, listening for any change
jQuery("#name").on("change", function() {

  // Print the value of the element
  console.log("From JQuery function: " + this.value);

});


// Function that can be called inline using onchange = "SelectChanged(this)"
function SelectChanged(el) {

  // Print the value of the inline element
  console.log("SelectChanged function: " + el.value);

}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

<td class="table-font">
  <select id="name" onchange="SelectChanged(this)">

    <option value="Firstname Surname 1" selected>Firstname Surname 1</option>
    <option value="Firstname Surname 2">Firstname Surname 2</option>
    
  </select>
</td>

【讨论】:

  • 没问题,很高兴为您提供帮助
【解决方案2】:
jQuery("#name").change("#name")

function SelectChanged() {
     alert(this.value); 
}

【讨论】:

  • 代码转储不能提供好的答案。你应该解释如何为什么这可以解决他们的问题。我推荐阅读,“How do I write a good answer?"
最近更新 更多