考虑以下情形:
HTML
<input type="text" id="source" value="the quick brown fox">
<input type="text" id="target">
CSS
#source
{
text-transform: capitalize;
}
JavaScript的
function element(id) {
return document.getElementById(id);
}
element('target').value = element('source').value;
CSS样式后, #source
应显示“敏捷的棕色狐狸”。
其目的是让text-transform
-ed值,并将其转储到#target
。 这是可能实现?
号你需要使用JavaScript来物理方式将它
假设你已经知道的源文本转化为资本,你可以做
window.onload=function() {
document.getElementById("source").onblur=function() {
var tgt = document.getElementById("target");
var capitalised = [];
var parts = this.value.split(" ");
for (var i=0;i<parts.length;i++) {
capitalised.push(parts[i].substring(0,1).toUpperCase()+parts[i].substring(1));
}
tgt.value=capitalised.join(" ");
}
}
mplungjan的答案是正确的,你不能使用JavaScript函数来确定转换值。 最后,你需要做的JavaScript中的变换。
不过,你不需要硬编码在资本转化为在mplungjan的答案。 也许你的一些文字是大写,而其他一些文字是大写的,和其他文本却是正常的。 您可以动态地处理每种情况下,只要你知道所有的选项。
你会做什么是确定使用JavaScript元素的样式 ,然后应用适当的变换在你的脚本,并从那里走。 这种转变的一个很好的例子是在mplungjan的答案。
不, text-transform
为只显示转型,并不实际修改元素中的数据。
从复制CSS变换值source
到target
将无法工作,因为价值实际上并没有改变,只是造型了。 其他样式属性(如字体家庭,或颜色)不转让; 文本转换将在同样有限的行为方式。
如果你想真正改变字符串,它听起来像你一样的价值,你就需要使用JavaScript,可能与正则表达式。
取而代之的是...
element('target').value = element('source').value;
...这个代码的短位应该做的正是你需要的东西:
element('target').value = element('source').value.replace(/(\b\w)/g, function (m, p1) {
return p1.toUpperCase();
});
的jsfiddle示范这里 。
简短的说明 :将\b
在正则表达式的开始查找任何一个字的开头和\w
(因为它的括号内捕获)捕获在这个位置的任何单个字母数字字符。 这则存储在参数p1
的功能,它只是返回一个大写的版本。