如何通过Javascript自动添加双引号来括起字符串
How to automatically add Double Quotes to enclose a string via Javascript?
我想用自动双引号括起一个搜索词
例如
<input type="text" name="keywords" value="" id="search" size="17" />
<input type="submit" value="Go">
访问者试图搜索短语=long enough
(它包含两个单词,中间有空格)
我需要字符串long enough
作为"long enough"
传递给服务器端(PHP)
我不想告诉访问者在搜索短语时使用双引号,对访问者来说,搜索应该很容易。
目前,当访问者输入一个单词为long
的搜索词时,搜索结果显示正确的文章。
但是,当访问者使用短语long enough
或任何其他短语,使用至少2个单词时,搜索结果是不准确的,因为搜索将long enough
作为2个单独的搜索项。
为了获得准确的搜索结果,ExpressionEngine CMS希望访问者输入"long enough"
[任何用双引号括起来的短语]
这就是我想自动做的,当访问者搜索一个单词时,它应该留下关键字,让它在没有任何引号的情况下通过,但当访问者使用两个或更多单词时,搜索表单应该在双引号中通过这些短语
@Jonathon Wisnoski提供的代码可以按照我的意愿工作,但有一个缺点
<script type="text/javascript">
function quoteWords() {
var search = document.getElementById("search_box");
search.value = search.value.replace(/^'s*|'s*$/g, ""); //trim string of ending and beginning whitespace
if(search.value.indexOf(" ") != -1){ //if more then one word
search.value = search.value.replace(/^"*|"*$/g, "'"");
}
}
</script>
问题:手动添加双引号并按提交时会中断,最后会多输入一个双引号。正则表达式代码应该查看是否存在双引号,它不应该添加任何内容。
因此它使"long enough"
到"long enough""
成为
任何人都可以检查regex代码,看看如何解决这个问题吗。
您实际上应该像服务器端那样处理字符串。任何用JavaScript预处理过的东西都不可靠。
但是,如果您确实想这样做,那么有一个非标准的String
方法,称为quote()
。
然而,因为它是非标准的,我会使用。。。
str = '"' + str.replace(/^"*|"*$/, '') + '"';
这剥去前导和尾随的"
,然后在"
中再次缠绕字符串。
由于您试图在某种程度上验证输入,所以做一些更通用的事情可能更有意义-例如,如果用户输入"foo"bar",您可能希望它最终看起来像"foo bar"
str = '"' + str.replace(/^"*|"*$/g, '') + '"'
你可能想做一些类似的事情:
str = '"' + str.replace(/"/g, '') + '"'
这在以后的研究中要简单得多。
这应该做到:
<input type="text" name="keywords" value="" id="search" size="17" />
<input onClick='var search = document.getElementById("search"); search.value = search.value.replace(/^'s*|'s*$/g, ""); if(search.value.indexOf(" ") != -1){search.value = search.value.replace(/^"*|"*$/g, "'"")}' type="submit" value="Go">
或者使用脚本标签中的脚本:
<script type="text/javascript">
function quoteWords() {
var search = document.getElementById("search");
search.value = search.value.replace(/^'s*|'s*$/g, ""); //trim string of ending and beginning whitespace
if(search.value.indexOf(" ") != -1){ //if more then one word
search.value = search.value.replace(/^"*|"*$/g, "'"");
}
}
</script>
<input type="text" name="keywords" value="" id="search" size="17">
<input onClick="quoteWords()" type="submit" value="Go">
- 将DOM节点值与字符串Javascript进行比较
- 到UpperCase字符串Javascript中的特定字符索引
- 替换字符串javascript中的所有特殊字符..
- 在数组中查找某些字符串(Javascript)
- 解析特定的字符串Javascript(Node.js)
- 从字符串 JavaScript 中过滤多个正则表达式
- 在字符串 JavaScript 中使用正则表达式替换
- 忽略字符串javascript中的字符
- 如何检查url是否包含多个字符串.Javascript/jquery
- 截断字符串JavaScript
- 计算字符串javascript中的某些单词
- 从'获取本月的最后一天;2015-02-23'字符串(javascript)
- 从字符串javascript中获取键值对
- 从路径字符串 - Javascript 获取所有父路径
- 在字符串Javascript中查找丢失的字母
- AngularJS:如何使所有ng模型都是字符串.JavaScript和长整数
- 将浮点转换为至少有一个小数点的字符串(javascript)
- 替换字符串 JavaScript 中的多个文本
- 检查另一个字符串 JavaScript 中一个字符串是否有任何字符的最佳方法
- 将变量的值包含在 href 字符串 javascript 中