重构javascript以避免撇号导致问题?

时间:2014-07-09 15:30:10

标签: javascript jquery ajax string apostrophe

我已经接管了一个网站,并且有很多javascript看起来像这样;

 function BuildHTMLString(item)
 {  
       return "<input name='Text' Type='text' value='" + item+ "' />";
 }

这些字符串随后用于发布表单。我意识到,如果变量项中有撇号,那么整个事情就会崩溃。

以编程方式填充文本框的建议方法是什么,这些文本框将成为表单帖子的一部分,而该帖子不会在其中创建包含撇号的名称的问题。

2 个答案:

答案 0 :(得分:2)

您可以使用document.createElement以编程方式创建元素,然后使用outerHTML属性:

function buildHtmlString(item) {
    var element = document.createElement("input");
    element.setAttribute("name", "Text");
    element.setAttribute("type", "text");
    element.setAttribute("value", item);

    return element.outerHTML;
}

在Chrome上,buildHtmlString("this has a quote \"");给了我:

<input name="Text" type="text" value="this has a quote &quot;"> 

我注意到您添加了jquery标记。所以你也可以用jQuery很容易地做到这一点:

function buildHtmlString(item) {
    return jQuery("<input>").attr("name", "Text")
                            .attr("type", "text")
                            .attr("value", item)
                            .get(0).outerHTML;
}

答案 1 :(得分:0)

当您使用jQuery时,您可以使用它来创建元素:

var $input = $('<input>')
    .attr('name', 'Text')
    .attr('type', 'text')
    .attr('value', item);

现在您有一个可以插入DOM或进一步操作的对象。

如果您希望HTML除了插入DOM之外的其他任何内容,您可以使用$input.get(0).outerHTML来获取它。