Jquery 如何在同一行的标记中附加字母
正如你们在手机上看到的,我正在构建一个键盘功能。到目前为止,我已经有了一个可以正常工作的键盘,它可以在Jquery 如何在同一行的标记中附加字母,jquery,html,regex,Jquery,Html,Regex,正如你们在手机上看到的,我正在构建一个键盘功能。到目前为止,我已经有了一个可以正常工作的键盘,它可以在divp中添加我想要的字母 这是我没有正则表达式的原始键盘: 当我使用正则表达式时,所有字母都变成大写:请参阅: 正则表达式做得很好,因为问题是在每次点击后,下一个字母都会在开发者工具中点击新行: 这是开发人员工具中的外观: <div id="result"> <p> "Q" "W" "E" "."
divp
中添加我想要的字母
这是我没有正则表达式的原始键盘:
当我使用正则表达式时,所有字母都变成大写:请参阅:
正则表达式做得很好,因为问题是在每次点击后,下一个字母都会在开发者工具中点击新行:
这是开发人员工具中的外观:
<div id="result">
<p>
"Q"
"W"
"E"
"."
"R"
"T"
"Y"
</p>
</div>
“Q”
“W”
“E”
"."
“R”
“T”
“Y”
虽然这是我想要的结果:
<div id="result">
<p>
"Qwe. Rty"
</p>
</div>
“Qwe.Rty”
是什么导致了这种行为
编辑:
也许我不清楚。我不希望它在我的console.log或dev工具中看起来很好,而是在屏幕上。但我知道这可能是因为我的正则表达式。为什么我的正则表达式总是大写。顺便说一句,我对正则表达式的理解很差。非常简单的解决方案,下面是更新的代码
var c = 0;
$(".ui-keyboard-1 button").add(".ui-keyboard-2 button").add(".ui-keyboard-3 button").click(function () {
c++;
if ($(this).hasClass('ui-keyboard-noresult')) {
return;
}
$('.ui-keyboard-space').click(function () {
$('.result p:last').append(' ');
});
$(this).val('span');
$result = $(this).find('span').text().toLowerCase();
$re = /(^|\. *)([a-z])/g;
$result = $result.replace($re, function (x) {
return x.toUpperCase();
});
$(".result p:last").append($result);
//debug
if(c > 1){
console.clear();
}
console.log($('.result p:last').html());
});
谢谢这是因为您正在使用
append()
。但是,您应该注意,HTML文档中的空白大部分被忽略,因此它对结果绝对没有影响。这就是开发工具在添加文本节点后显示标记的方式。如果您复制元素的outerHTML,您将看到它相当于Qwe。Rty
@David Thomas就像小提琴一样。它将显示在一行上。如果我将regex添加到其中,所有字母都会变成大写,因此我认为浏览器会将其视为进入一个新行,从而使用regex将其大写。我可能误解了一些事情,但不同的字母大小写似乎是由于:$result.replace($re,function(x){return x.toUpperCase();})代码>@DavidThomas我试过这个。还试图重新命名它,并认为它可能导致某种错误。在你的例子中,我认为他没有看到那行$results,只是跳过了正则表达式。请描述问题是什么,以及为什么你的代码修复了它。我们来这里是为了教育人们,而不是简单地抛弃代码。我很高兴你能和我一起思考。但这并不是我想要的。我认为问题是因为这种行为。我尝试了您的方法,得到了一个整洁的console.log,但仍然返回大写字母。我想要一个整洁的字符串,当regex被称为大写,否则只有小写。