Jquery,如何逃避报价

San*_*cci 4 jquery escaping utf-8

我正在使用一个简单的jquery代码,它将HTML代码形成一个标记,然后将这些内容放入表单输入中

<td class="name_cat" ><span class="name_cat">It&#039;s a &quot;test&quot; </span> (5)</td>
Run Code Online (Sandbox Code Playgroud)

jquery获取内容span.name_cat并将其返回It's a "test".因此,当我将其打印成输入时,它就变成了

<input value="It's a "test"" />
Run Code Online (Sandbox Code Playgroud)

您可以想象只会显示为It's a,以下双引号将关闭值标记.保存原始字符串而不在输入中显示utf8代码的诀窍是什么?

Jquery代码

            $(".edit_cat").click(function(){

            tr = $(this).parents("tr:first");
            id_cat = $(this).attr("id");
            td_name = tr.find(".name_cat");
            span_name = tr.find("span.name_cat").html();
            form = '<form action="/admin/controllers/edit_cat.php" method="post" >'+
                            '<input type="hidden" name="id_cat" value="'+id_cat+'" />'+
                            '<input type="text" name="name_cat" value="'+span_name+'" />'+
                            '<input type="submit" value="save" />'+
                            '</form>';
            td_name.html(form);

            console.log(span_name);


        }
        );
Run Code Online (Sandbox Code Playgroud)

我基本上不需要html()解码Utf8

use*_*716 9

我相信这应该为你照顾它.

var span_name = tr.find("span.name_cat").html().replace(/"/g, "&quot;");
Run Code Online (Sandbox Code Playgroud)

示例: http ://jsfiddle.net/yzthA/

另外,如果没有,请不要忘记声明变量var.


Jim*_*ert 5

您可以按照现在的方式构建表单,但使用jQuery的上下文遍历表单对象

<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.js"></script>

<script type="text/javascript">
$(function() {
    $('#go').click(function() { 
        var tester = $('<div></div>').html('It&#039;s a &quot;test&quot;');
        var form = $('<form action="/admin/controllers/edit_cat.php" method="post" >' +
                    '<input type="hidden" name="id_cat" />' +
                    '<input type="text" name="name_cat" />' +
                    '<input type="submit" value="save" />' +
                    '</form>');
        $(':hidden:first', form).attr('value', tester.text());
        $(':text:first', form).attr('value', "Some attribute");

        $('#output').append(form);
    });
});
</script>
<input id="go" type="submit" value="click"/>
<div id="output">
</div>
Run Code Online (Sandbox Code Playgroud)

我在这里做的是将你的表单html输入包装在jQuery对象中form.然后,您可以使用很少使用的jQuery形式查询该对象上下文中的项:

jQuery(selector,[context])
selector:包含选择器表达式
上下文的字符串:用作上下文的DOM元素,Document或jQuery

编辑:我创建了一个tester对象并将内容设置为您的html示例.然后,当我在隐藏输入中设置值时,我调用.text()以获取非html表示.价值与您预期的相同.

<form action="/admin/controllers/edit_cat.php" method="post">
    <input type="hidden" name="id_cat" value="It's a &quot;test&quot;">
    <input type="text" name="name_cat" value="Some attribute">
    <input type="submit" value="save">
</form>
Run Code Online (Sandbox Code Playgroud)

但是你必须在后端解码这个html.这可能是你能做的最好的,因为XML不允许"转义"引用"\"this\"".规范要求报价转义&quot;this&quot;.