Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/456.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript ajax调用的键事件不起作用_Javascript_Ajax_Json - Fatal编程技术网

Javascript ajax调用的键事件不起作用

Javascript 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

我正在制作一个应用程序,当用户按下Enter键时,它应该发出一个ajax调用

我使用了一个插件来浏览这些项目,并为“点击”创建了jQuery代码(工作得很好)

问题是,当我将其设置为按Enter键调用ajax代码时,会出现某种冲突,并且无法工作

有人有任何解决方案或其他方法吗? 谢谢

javascript

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);  
          });  
        }  
    });