获得通过JavaScript输入的CSS变换值(Getting the CSS-transforme

2019-07-17 22:51发布

考虑以下情形:

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 。 这是可能实现?

Answer 1:

号你需要使用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(" ");
  }
}


Answer 2:

mplungjan的答案是正确的,你不能使用JavaScript函数来确定转换值。 最后,你需要做的JavaScript中的变换。

不过,你不需要硬编码在资本转化为在mplungjan的答案。 也许你的一些文字是大写,而其他一些文字是大写的,和其他文本却是正常的。 您可以动态地处理每种情况下,只要你知道所有的选项。

你会做什么是确定使用JavaScript元素的样式 ,然后应用适当的变换在你的脚本,并从那里走。 这种转变的一个很好的例子是在mplungjan的答案。



Answer 3:

不, text-transform为只显示转型,并不实际修改元素中的数据。



Answer 4:

从复制CSS变换值sourcetarget将无法工作,因为价值实际上并没有改变,只是造型了。 其他样式属性(如字体家庭,或颜色)不转让; 文本转换将在同样有限的行为方式。

如果你想真正改变字符串,它听起来像你一样的价值,你就需要使用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的功能,它只是返回一个大写的版本。



文章来源: Getting the CSS-transformed value of an input via JavaScript