我正在使用一个简单的jquery代码,它将HTML代码写入一个标记,然后将此内容放入表单输入
<td class="name_cat" ><span class="name_cat">It's a "test" </span> (5)</td>
jquery将内容转换为span.name_cat
并将其作为It's a "test"
返回。
因此,当我将其打印到输入中时,它变为
<input value="It's a "test"" />
您可以想象只显示为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);
}
);
我基本上需要html()
不要解码Utf8
答案 0 :(得分:9)
我相信这应该照顾你。
var span_name = tr.find("span.name_cat").html().replace(/"/g, """);
示例: http://jsfiddle.net/yzthA/
此外,如果您没有,请不要忘记使用var
声明变量。
答案 1 :(得分: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's a "test"');
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>
我在这里做的是将表单html输入包装在jQuery对象中form
。然后,您可以使用少用的jQuery形式查询该对象上下文中的项:
jQuery(选择器,[上下文])
selector:包含选择器表达式的字符串
context:用作上下文的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 "test"">
<input type="text" name="name_cat" value="Some attribute">
<input type="submit" value="save">
</form>
但是你必须在后端解码这个html。这可能是您能够做到的最好的,因为XML不允许像"\"this\""
那样“转义”引号。该规范要求引用像"this"
一样进行转义。
答案 2 :(得分:2)
您可以使用此函数对值进行HTML编码:
function htmlEncode(str) {
var div = document.createElement('div');
var txt = document.createTextNode(str);
div.appendChild(txt);
return div.innerHTML;
}
然后编码任何可以包含引号的值:
span_name = htmlEncode(tr.find("span.name_cat").html());
更好的替代方法可能是使用jQuery构建输入并使用val()方法设置值,然后附加到表单:
var $form = $('<form action="/admin/controllers/edit_cat.php" method="post" />');
var $id_cat_input = $('<input type="hidden" name="id_cat" />');
$id_cat_input.val(id_cat);
$id_cat_input.appendTo($form);
答案 3 :(得分:0)
我将user113716的answer转换为jQuery插件并稍作清理。
(function($) {
$.fn.escapeQuotes = function() {
return this.html().replace(/"/g, '"');
}
})(jQuery);
var spanValue = $('span').escapeQuotes();
var formTemplate = [
'<form action="/admin/controllers/edit_cat.php" method="post" >',
'<input type="text" name="name_cat" value="' + spanValue + '" />',
'<input type="submit" value="save" />',
'</form>'
].join('');
$(formTemplate).appendTo('body');
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<span class="name_cat">It's a "test" </span> (5)
&#13;
答案 4 :(得分:-1)
您应该将它们转换为html实体或跳过它们。 作为html实体的引用如下所示:“ 用你的编程语言做。不是js。