Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/422.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 为什么jQuery向我的字符串中添加反斜杠“\”字符?_Javascript_Jquery_Escaping_Jeditable - Fatal编程技术网

Javascript 为什么jQuery向我的字符串中添加反斜杠“\”字符?

Javascript 为什么jQuery向我的字符串中添加反斜杠“\”字符?,javascript,jquery,escaping,jeditable,Javascript,Jquery,Escaping,Jeditable,我使用jQuery将元素的内容替换为字符串,其中包含一些元素。下面是我用来创建$value字符串的代码: var value = '<span class="fn">' + $("#fn_").val() + '</span>'; $("input", this).val(value); 但是,实际输出的内容在整个过程中都有退格字符,如下所示: <span class="\&quot;fn\&quot;">Name</span>

我使用jQuery将元素的内容替换为字符串,其中包含一些元素。下面是我用来创建$value字符串的代码:

var value =  '<span class="fn">' + $("#fn_").val() + '</span>';
$("input", this).val(value);
但是,实际输出的内容在整个过程中都有退格字符,如下所示:

<span class="\&quot;fn\&quot;">Name</span>
我想这可能是我的一个愚蠢的错误,但不确定我做错了什么?谢谢你的建议

编辑

为了清楚起见,下面是完整的代码,我正在为jEditable创建一个自定义输入类型,它允许我内联编辑vcard

$.editable.addInputType('person', {
element : function(settings, original) {     
    var fn  = $('<input id="fn_"/>');
    var bday  = $('<input id="bday_" />');
    var wday  = $('<input id="wday_" />');
    var dday  = $('<input id="dday_" />');
    var spouse  = $('<input id="spouse_" />');

    $(this).append(fn);
    $(this).append(bday);
    $(this).append(wday);
    $(this).append(dday);
    $(this).append(spouse);

    /* Hidden input to store value which is submitted to server. */
    var hidden = $('<input type="hidden">');
    $(this).append(hidden);
    return(hidden);
},

content : function(string, settings, original) {
        var $data = $(string);

        var data = {};
        $data.each(function () {
            var $t = $(this);
            data[$t.attr('class')] = {
                                   class: $t.attr('class'),
                                   value: $t.text()};
        });

        alert(data.length);

        $("#fn_", this).val('Name');
        $("#bday_", this).val('Born');
        $("#wday_", this).val('Married');
        $("#dday_", this).val('Died');
        $("#spouse_", this).val('Spouse');
    },

    submit: function (settings, original) {
    var value =  "<span class=fn>" + $("#fn_").val() + '</span>' + '<span class=spouse>' + $("#spouse_").val() + '</span>' + '<span class=bday>' + $("#bday_").val() + '</span>' + '<span class=wday>' + $("#wday_").val() + '</span>' +'<span class=dday>' + $("#dday_").val() + '</span>';
        $("input", this).val(value);
    }

});

嗯,我似乎通过使用

'<span class=fn>'
而不是

'<span class="fn">'

i、 e.删除类名周围的引号。由于某些原因,引号被正确地放回输出中,但是我不能使用多个类。

如果您试图设置跨距内的HTML,正确的方法是:

.empty().append($('<span class="fn"/>').text($("#fn_").val()))

这可以确保文本框中的值在插入span元素之前正确地进行HTML转义。使用.val设置元素的HTML内容是不正确的;使用.html,尽管在这种情况下没有必要使用它。

您知道在将数据发送到服务器之前会执行提交函数吗?请查看表源,这意味着您的所有跨度都会发送到服务器,因此对元素进行编码的可能是服务器端脚本


干杯。

您能展示输出值的代码吗?您如何/在哪里输出值?我使用的是jEditable,所以它是它的一个函数的一部分。我已经编辑了上面的示例来说明这对我来说没有意义-为什么要在某个元素的值中填充a?@chris you Have class=fn对,你怎么会得到spooce,你能对值做一次警告吗,将变量名从value更改为其他名称…其他内容正在编写,同时生成html字符串,我们应该给出双引号…所以第二个例子应该是有效的,而不是第一个?@是的,我们应该总是像你的第二个例子一样,如果你像第一个一样给出,代码可能会中断,出于某种原因,它可能在这里工作。做一件事,提供完整的html@gov我已经编辑了我的帖子以包含完整的脚本,这是否更有意义,或者我是否也应该发布所有HTML?我认为他希望输入来显示某些内容,而不是用span来替换。关于您的第一个代码示例,您可以只执行$.classfn.text$fn_uu.val,这是首选方法
.replaceWith($('<span class="fn"/>').text($("#fn_").val()))
.removeClass('vcard').addClass('fn').text($("#fn_").val())