Javascript ajax调用的键事件不起作用
我正在制作一个应用程序,当用户按下Enter键时,它应该发出一个ajax调用 我使用了一个插件来浏览这些项目,并为“点击”创建了jQuery代码(工作得很好) 问题是,当我将其设置为按Enter键调用ajax代码时,会出现某种冲突,并且无法工作 有人有任何解决方案或其他方法吗? 谢谢 javascriptJavascript ajax调用的键事件不起作用,javascript,ajax,json,Javascript,Ajax,Json,我正在制作一个应用程序,当用户按下Enter键时,它应该发出一个ajax调用 我使用了一个插件来浏览这些项目,并为“点击”创建了jQuery代码(工作得很好) 问题是,当我将其设置为按Enter键调用ajax代码时,会出现某种冲突,并且无法工作 有人有任何解决方案或其他方法吗? 谢谢 javascript var main = function () { var url = "http://query.yahooapis.com/v1/public/yql?q=select%20*%20
var main = function () {
var url = "http://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20xml%20where%20url%3D'http%3A%2F%2Frss.cnn.com%2Fservices%2Fpodcasting%2Fac360%2Frss.xml'%20AND%20itemPath%3D%22%2F%2Fchannel%22&format=json&diagnostics=true&callback=?";
$.ajax({
type: 'GET',
url: url,
async: false,
jsonpCallback: 'jsonCallback',
contentType: "application/json",
dataType: 'jsonp',
success: function (json) {
// titulos
var titles = json.query.results.channel.item.map(function (item) {
return item.title;
});
// urls
var urls = json.query.results.channel.item.map(function (item) {
return item.origLink;
});
$(".container-list-podcast ul").append('<li>' + titles.join('</li><li>'));
$(".container-list-podcast ul li").each(function (key, value) {
var text = $(this).text();
$(this).html('<a class="link-podcast" href="' + urls[key] + '">' + text + '</a>');
});
// Load KeyNavigation
a = $('.nav_holder li a').keynav(function () {
return window.keyNavigationDisabled;
});
},
error: function (e) {
console.log(e.message);
}
});
}(jQuery);
///
$(document).ready(function () {
// Call Ajax Click <-- work
$('.container-list-podcast').on('click', '.link-podcast', function (e) {
e.preventDefault();
$('.video').attr('src', this.href);
});
// Call Ajax Key Enter <-- dont work
$('.container-list-podcast').on('keypress', '.selected', function (e) {
e.preventDefault();
if (e.which == 13) { // keyCode 13 == Enter key
$('.video').attr('src', this.href);
}
});
});
var main=函数(){
变量url=”http://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20xml%20where%20url%3D'http%3A%2F%2Frss.cnn.com%2Fservices%2fpodcast%2Fac360%2Frss.xml'%20和%20itemPath%3D%22%2F%2Fchannel%22&format=json&diagnostics=true&callback=?';
$.ajax({
键入:“GET”,
url:url,
async:false,
JSONPCCallback:'jsonCallback',
contentType:“应用程序/json”,
数据类型:“jsonp”,
成功:函数(json){
//提托洛斯
var titles=json.query.results.channel.item.map(函数(项){
返回项目名称;
});
//网址
var url=json.query.results.channel.item.map(函数(项){
返回项目.origLink;
});
$(“.container list podcast ul”).append(“”+titles.join(“ ”);
$(“.container list podcast ul li”)。每个(函数(键、值){
var text=$(this.text();
$(this.html(“”);
});
//加载键导航
a=$('.nav_'li a').keynav(函数(){
返回窗口。keyNavigationDisabled;
});
},
错误:函数(e){
控制台日志(e.message);
}
});
}(jQuery);
///
$(文档).ready(函数(){
//调用Ajax Click实际上,除非有焦点,否则a元素不会触发keypress事件。将此事件绑定到文档会更安全
将您的功能更改为:
// Call Ajax Key Enter
$(document).on('keypress', function (e) {
if (e.which == 13) { // keyCode 13 == Enter key
$('.video').attr('src', $('.container-list-podcast .selected').prop('href'));
}
e.preventDefault();
});
您可以尝试将按键事件绑定到正文或文档,它将完全满足您的需要。我看不出您在按键上调用的是main
。我不明白,main是什么?我使用了代码,它的工作方式类似于单击普通。您能显示相关的HTML吗?这可能会有所帮助。必须有某种东西触发函数main
当用户单击或按ENTER键时。这个小提琴的主要部分我看到了标记的一个问题。在带有class容器列表播客的div中,没有任何类链接播客
或被选中的内容。您正在向jQuery on方法和该选择器传递一个选择器用于筛选您正在调用的选择器:P我不明白为什么接受此答案。上面的答案在功能上与问题中发布的代码等效。
$('body').on('keydown', function (e) {
e.preventDefault();
if (e.which == 13) { // keyCode 13 == Enter key
$('.selected').trigger('click', function() {
$('.video').attr('src', this.href);
});
}
});