Jquery on("更改")永远不会触发选择列表

时间:2016-05-20 16:40:42

标签: javascript jquery events handlers

我有一个带有选择列表的表单,Jquery将onChange处理程序绑定到该选择。永远不会调用处理程序。在Jquery方面,我尝试过这些:

$("#dateShortcuts").on("change", function() { ... });
$("#dateShortcuts").change(function() { ... });
$("#dateShortcuts").on("change", myPredefinedFunc());
$(document.body).on("change", "#id", function() { ... });
$("#parentForm").on("change", "#dateShortcuts", function() { ... });

无论我尝试什么,我都无法触发事件处理程序。我的功能目前只是警告一个字符串,所以我知道它的工作原理,但最终它会调整两个日期选择器。我的选择列表:

<select id="dateShortcuts" name="dateShortcuts">
<option value="-5">Since Sunday (last 5 days)</option>
<option value="0">Today Only</option>
<option value="-20">Days since May 1</option>
<option value="-1">Yesterday and Today</option>
<option value="-30">Last 30 Days</option>
</select>

我真的不知道还有什么可以尝试的。我在网上找到的所有东西都说其中一个应该有效。我知道Jquery本身正在工作,因为它在同一页面上处理了很多其他任务并完美地完成了它们。我还应该说我已经尝试过的样本都在$(document.ready)里面,我(成功)在同一个表单中为某些文本字段设置onChange处理程序。其他一切都很好,只是这个选择列表不能正常工作。我已经在IE和Firefox上测试了它。感谢您的任何建议。

4 个答案:

答案 0 :(得分:0)

试试这个

$(document).on("change", "#dateShortcuts", function() {
//your code here
});

答案 1 :(得分:0)

试试这个

$(function(){
   $(document).on("change", "#dateShortcuts", function() {
   //do something here
   });
});

答案 2 :(得分:0)

如果javascript代码不在

内运行,我会遇到同样的问题
$(document).ready(function() {
   ... 
});

阻止或<select>可能是使用javascript创建的。 我可以使用以下方法解决它:

$('#dateShortcuts').on('change', document, function() {
   // your code here...
    ... 
});

答案 3 :(得分:-1)

嗯,不太了解JQuery,但这看起来像是基本的(取自w3schools):

$("#select").change(function(){

    alert("The text has been changed.");
});

问题,是你的代码之前创建的“dateShortcuts”吗?这可能是问题所在。如果没有,你可以把你的函数放在try中并捕获:

function doSomething(){

    try{

        alert('IN');
        //do something here
    }

    catch(e){

        alert(e.message);
    }
}

如果显示错误,请发送电子邮件。如果没有,那么你可能在函数外面有一个语法错误(注意我发出一个警告,看看函数是否真的在运行)。

希望它有所帮助。