在HTML属性中添加CR或LF

时间:2013-09-13 14:05:59

标签: javascript jquery html title carriage-return

为了解释这一点,我有一个mouseenter Jquery事件启动了一个AJAX调用。还有一个Jquery UI工具提示。

$(function()
{
    $(document).tooltip({track:true});
    $('#NewUser').mouseenter(function(){AJAXValidation("NewUser")});
});  

这是电话:

function AJAXValidation(section)
{
    var request = $.ajax(
    {
        url: "ProcessJRT.php",
        type: "POST",
        contentType:"application/x-www-form-urlencoded;charset=UTF-8",
        data:
        {
            validate:section
        }
    });

    request.done(
        function(message)
        {
            var div = document.createElement('div');
            $(div).html(message);
            $(div).children().each
            (
                function(i)
                {
                    var title = '';

                    if($('#' + $(this).attr('id')).attr('title') != null)
                    {
                        title = $('#' + $(this).id).attr('title');
                    }

                    title += $(this).html() + '\r\n';

                    $('#' + $(this).id).attr('title', title);
                }
            );
        });
}

它现在所做的是从<div>获取message并将它们放在父<div>中。 (在我的代码中div已经存在,我改变了那个部分,所以问题会尽可能短)。

然后我从那些<div>中获取文字,我想将它们放在相应的<input/>标题属性中。

这里所有工作都很完美,这可以解决这个愚蠢的小事:

我无法在标题中添加LN或CR,因此div中的所有文本都将在不同的行中...

我尝试在属性中添加</br>,如下所示:

function(i)
{
    var title = '';

    if($('#' + $(this).id).attr('title') != null)
    {
        title = $('#' + $(this).attr('id')).attr('title');
    }

    title += $(this).html() + '</br>';//<---See I added a BR here 

    $('#' + $(this).id).attr('title', title);
}

但它将</br>显示为普通文本。我尝试了String.fromCharCode(13),但没有工作,我尝试了'\n''\r\n',但仍然有效。

有人可以指出我正在努力探讨这个吗?

谢谢!

编辑:

$('#' + $(this).attr('id'))更改为$('#' + $(this).id)

2 个答案:

答案 0 :(得分:1)

您不能以这种方式格式化title属性,它不起作用,并且在不同的浏览器中会有所不同。

尝试jquery插件qTip来实现你想要的。 (看起来也不错!) http://craigsworks.com/projects/qtip/

或者,您可以使用&nbsp;&nbsp;&nbsp;等作弊,将文本推送到下一行。但这充其量只是片状。

答案 1 :(得分:1)

以下是我用@crush给我的想法解决问题的方法:

首先:

我从触发事件的函数中删除了工具提示初始化:

$(function()
{
    $('#NewUser').mouseenter(function(){AJAXValidation("NewUser")});
});

下一步:

我改变了&#34;完成&#34;函数所以我每次用html内容初始化一个新的工具提示(FYI JQuery工具提示可以格式化HTML)

现在看起来像是什么:

function(message)
{
    var div = document.createElement('div');
    $(div).html(message);

    var title = '';

    $(div).children().each
    (
        function(i)
        {
            if($('#' + $(this).id).attr('title') != null)
            {
                title = $('#' + $(this).id).attr('title');
            }

            title += $(this).html() + '</br>';

            $(document).tooltip({content:title, items:('#' + $(this).id)});
        }
    );
}