5

所以如果我有代码

.rsform-input-box {text-transform: uppercase;}

在特定于底部表单字段的网站http://www.thediabetesnetwork.com上,您在键入时会看到转换为大写,但是在您键入的情况下会导出数据。例如,如果我键入Shane,它直观地显示了 SHANE。提交时,它将恢复到数据库中的 Shane(在之前的某个时间点)。

我的问题是它为什么要这样做,有哪些解决方法?我的另一个选择是

 function toUpCase()
{
document.getElementById("first").value=document.getElementById("first").value.toUpperCase();
document.getElementById("last").value=document.getElementById("last").value.toUpperCase();
document.getElementById("email").value=document.getElementById("email").value.toUpperCase();
}  
4

2 回答 2

13

CSS 仅用于呈现内容。因此,它不会更改用户输入的值,或表单提交到数据库的内容。

如果您的业务要求只接受所有大写值到数据库中,最好在后端处理。例如:$input = strtoupper($input);如果使用 PHP。在后端执行此操作将确保您的处理发生,即使用户关闭了 JavaScript。

对于低安全性要求,您通过 JavaScript 处理它的想法应该可行;toUpCase只需在提交表单之前 触发您的功能。

从可用性的角度来看——担心什么进入数据库并不是用户的工作;他们可能不需要知道。但是,如果您在每次使用这些数据点时(例如在登录时)都在幕后强制执行正确的案例,您会让他们的生活更轻松一些。

于 2012-11-01T22:38:01.327 回答
0

以为我会添加到这个答案中,如果您希望内容以通过 CSS 呈现的方式返回,innerText将执行此操作。看这个例子:

这是一个运行示例:

(function() {
  document.getElementById('output').innerHTML = document.getElementById('text-selector').innerText;
}());
.uppercase {
  text-transform: uppercase;
}

div {
  margin-bottom: 20px;
}
<label>Input:</label>
<div class="container uppercase">
  <div>Here is some text.</div>
  <div id="text-selector">This is the text that will be be selected.</div>

</div>

<label>Output:</label>
<div class="container">
  <div>Here is some text.</div>
  <div id="output"></div>
</div>

规范:https ://html.spec.whatwg.org/multipage/dom.html#the-innertext-idl-attribute

于 2017-02-21T21:10:17.460 回答