我想自动用双引号将搜索词括起来
例如
<input type="text" name="keywords" value="" id="search" size="17" />
<input type="submit" value="Go">
访问者试图搜索一个短语 = long enough
(它包含 2 个单词,中间有一个空格)
我需要将字符串 long enough
作为 "long enough"
传递给服务器端 (PHP)
我不想告诉访问者使用双引号来搜索短语,对于访问者来说搜索应该很容易。
目前,当访问者输入包含一个词 long
的搜索词时,搜索结果会显示正确的文章。
但是当访问者使用短语 long enough
或任何其他短语时,至少使用 2 个单词,搜索结果不准确,因为搜索需要 long enough
作为 2 个单独的搜索词。
为了获得准确的搜索结果,ExpressionEngine CMS 希望访问者输入 "long enough"
[任何用双引号引起来的短语]
这是我想自动做的,当访问者搜索一个词时,它应该留下关键字并让它通过而不带任何引号,但是当访问者使用 2 个或更多词时,搜索表单应该通过这些短语双引号
@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>
问题: 手动添加双引号并按提交时中断,最后输入一个额外的双引号。正则表达式代码应该查看双引号是否存在,它不应该添加任何东西。
所以它使 “足够长”
到 “足够长””
任何人都可以检查正则表达式代码,看看如何解决这个问题。
最佳答案
您实际上应该按原样 服务器端处理字符串。任何使用 JavaScript 预处理的东西都不能依赖。
但是,如果您确实想这样做,可以使用一个名为 quote()
的非标准 String
方法。 .
但是,因为它不是标准的,所以我会使用...
str = '"' + str.replace(/^"*|"*$/, '') + '"';
这会去除前导和尾随 "
,然后将字符串再次包装在 "
中。
关于javascript - 如何通过 Javascript 自动添加双引号将字符串括起来?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6146860/