0

我正在使用 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);
    }

});
4

3 回答 3

0

您是否知道在将数据发送到服务器之前执行了您的提交功能(查看 Jeditable 源),这意味着您的所有“跨度”都已发送到服务器,因此可能对您的元素进行编码的是您的服务器端脚本.

干杯。

于 2010-12-27T04:01:38.437 回答
0

嗯,我似乎已经通过使用

'<span class=fn>'

代替

'<span class="fn">'

即从类名周围删除引号。由于某种原因,引号被正确地放回输出中,但是我无法使用多个类。

于 2010-12-04T16:33:17.227 回答
0

如果您尝试设置跨度内的 HTML,一种正确的方法是:

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

或者,如果您想完全替换元素:

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

或者,如果您只想删除 class vcard,添加 classfn并设置内容:

.removeClass('vcard').addClass('fn').text($("#fn_").val())

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

于 2010-12-04T17:04:18.813 回答