输入上的尾随斜线之谜(消失了!)jquery

时间:2013-04-17 15:10:35

标签: javascript jquery ajax

我有一个非常特殊的问题,我无法掌握它。 我的输入元素上的尾部斜线消失了,虽然我确定(双重检查)php确实包含它们。当jquery将这些数据附加到html树时会发生一些事情。

问题可以在这里看到:http://gamoicani.es/logo/如果你点击logo并看到输入html,你会发现最后没有尾部斜杠。

但在php中我有这个:

<input type="text" name="guesslogo" data-lang="<?php echo $row['logo_lang']; ?>" />

我甚至试过<input></input>,但结果是一样的。

我还在这些输入上禁用了旋钮和kbd jquery插件,但有些东西不对,它根本不起作用。

我检查了我的ajax电话:

function create_views(level) {
        $.ajax({
            url: "actions.php",
            type: "GET",
            data: "show_level=" + level,
            cache: false,
            success: function (data){
                views[level] = '<li data-level="' + level + '">' + data + '</li>';

                //Count completed tasks
                completed_calls++;

                //if last level is loaded-called append and activate slider
                if (levels == completed_calls) {
                    //append views to container
                    console.dir($(".slides_container").append(views.join(' ')));
                    //activate slider
                    unislider = $(".slides_container").dpUniSlider({
                        //loop: false,
                        draggable: false
                    });
                    //Activate Georgian keyboard for some logos
                    $("input[data-lang=ge]").GeoKBD();

                    //Activate progress bar
                    update_level_progress_bar();
                }
            }
        });
}

在视图和/上有console.dir吗?所以一定是在追加出现问题的时候......我的想法已经用完了......

为什么我要关心斜杠?

on.keypress only works for first input in html

//check answer on ENTER keyboard press
$("body").on("keypress", "input:text[name=guesslogo]", function(e){
    if (e.keyCode == 13) {  
        $(this).siblings(".check").trigger("click");
    }
});

这不能正常工作!

任何帮助表示赞赏!

3 个答案:

答案 0 :(得分:2)

如前所述,它与斜杠无关。

使用keydown将代码更改为使用document而不是body

$(document).on("keydown","input[name='guesslogo']",function(e){
    if (e.keyCode == 13) {  
        $(this).siblings(".check").trigger("click");
    }
});

您的代码将适用于此更改。

答案 1 :(得分:1)

您不需要在输入标记上使用斜杠。它们不包含其中的项目,并表示为单个标记。

此:

  

我甚至试过<input></input>,但结果是一样的。

实际上是完全错误的。永远不会有input

的结束标记

另一方面,jQuery没有附加你发布的内容,它会解析它,然后将其添加为语义正确的HTML。

例如$().append会为"<div>""<div/>""<div></div>"添加相同的内容

Chrome开发工具等工具也会在没有/的情况下显示输入,即使您明确将其输入到源代码中也是如此。

尝试检查输入:http://jsfiddle.net/f7USH/,你会看到元素被添加为带斜杠的输入,但在devtools中没有它。

答案 2 :(得分:0)

现代HTML中的自动关闭标记语法仅为syntactic sugar for people addicted to XML

当您使用DOM查看器查看文档时,您会看到DOM的序列化为HTML(而不是原始源代码)。

由于斜杠完全是可选的,因此您的查看器无法渲染它。

  

为什么我要关心斜杠?

该代码不起作用与尾部斜杠无关。