【发布时间】:2016-08-10 22:07:53
【问题描述】:
我目前遇到了代码问题。在我的代码中,我有一个文本区域,用户可以在其中输入一篇文章的标题,我希望这篇文章只在一行中。这就是为什么我写了一个脚本来防止用户按回车键。但是他们可以绕过这种安全性,事实上,如果他们复制/越过换行符,他们就可以进入换行符。那么,有没有办法检测换行符?我想我们可以用正则表达式和 \n 或 \n 来做到这一点。但是我试过这个:
var enteredText = $('textarea[name="titleIdea"]').val();
var match = /\r|\n/.exec(enteredText);
if (match) {
alert('working');
}
并且由于未知原因它不起作用。我认为 var enteredText = $('textarea[name="titleIdea"]').val(); 不起作用,因为当我尝试 alert() 它时,它什么也没显示。但奇怪的是,当我对 $('textarea[name="titleIdea"]').val(); 发出警报时而不是在输入文本变量上显示内容。 祝你有美好的一天。 (对不起,我是法国人)
【问题讨论】:
-
您不使用文本字段是否有某些原因?尝试在代码中添加一些 console.log() 语句,看看它在哪里中断: console.log(enteredText); var match = /\r|\n/.exec(enteredText);
-
@Wes
console.log不是语句,而是函数。 -
您确实应该根据您期望的数据选择输入类型。 UI 设计的第一条规则是明确您期望的数据类型。与@Wes 一致,您应该使用文本类型的输入字段。文本区域让用户认为多行是可以的。对于选择器,我认为内引号应该是单引号,尽管您总是可以只为元素添加一个 id 并通过 id 选择它。
-
“但他们可以绕过这种安全性” - 你在客户端所做的一切都远非“安全性”。 (甚至假设到达您的脚本的每个请求都必须来自“浏览器”,这太天真了。)在服务器端执行此操作 - 如果数据包含换行符,则拒绝数据,或者自动过滤掉它们。跨度>
-
@TheProHands 感谢您的澄清 - 我一直认为
console.log()就像print_r声明。但从技术上讲,你是正确的。并不是说它有助于回答这个问题......
标签: javascript jquery