我有一个输入字段并在其中输入XHTML代码,它返回修改后代码的输出,例如我在以下输入中输入数字:
<label> Text <label>
<p> RESULT TEXT </p>
<label> Text <label>
<p> RESULT TEXT </p>
<label> Text <label>
<p> RESULT TEXT </p>
<label> Text <label>
<p> RESULT TEXT </p>
我需要在标记<p>
中添加以下单词“Box”,并且只将第一个字母保留为大写,其余字母保留为小写。以这种方式获得底线:
<label> Text <label>
<p> Result text box </p>
<label> Text <label>
<p> Result text box </p>
<label> Text <label>
<p> Result text box </p>
<label> Text <label>
<p> Result text box </p>
我正在尝试使用以下代码执行此操作:
var code = $('textarea[name=message]').val();
/* prevent the creation of multiple output-blocks if someone clicks on the submit-button more than once */
if ($('#output').length < 1) {
$("body").append('<h2>Output</h2><textarea id="output" rows="10" cols="100"></textarea>');
}
code = code.find(p).text("box");
code = code..replace(/\w\S*/g, function(txt){return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase();});
$('#output').val(code);
答案 0 :(得分:2)
一些问题:
label
代码被错误关闭(您忘记了/
)code
变量是字符串而不是jquery对象,因此您无法对其执行find
。code..replace
(双点).find(p)
中,p
未定义。你想要的是传递一个字符串,所以你必须用引号括起来。 .find('p')
使用类似的内容修复所有这些问题
var code = $('textarea[name=message]').val();
/* prevent the creation of multiple output-blocks if someone clicks on the submit-button more than once */
if ($('#output').length < 1) {
$("body").append('<h2>Output</h2><textarea id="output" rows="10" cols="100"></textarea>');
}
// create a jquery object out of the code
var livehtml = $('<div/>', {
html: code
});
// find the <p> elements and alter their html
livehtml.find('p').append("box").html(function (idx, currentHtml) {
return currentHtml.charAt(0).toUpperCase() + currentHtml.substr(1).toLowerCase();
});
$('#output').val(livehtml.html());