我有一个搜索框和一个建议框来显示建议。
用户在搜索框中输入内容后,系统会显示建议,然后用户可以选择其中一个建议添加到搜索输入框中。之后,用户将能够键入其他条款以接收建议等。
我可以显示建议并将所选建议添加到输入框,但
让我们说用户输入f然后先建议用户选择它,然后输入框将是f,首先它应该是第一个。如果我重置输入,我将丢失其他搜索条件。
简而言之:我想在最后一个分号之前保留所有值,并删除分号后的所有值。
码
<script type="text/javascript">
function selectS(value){
alert("clicked:" + value);
var curr = $('#term').val();
if(curr)
curr += ";";
$('#term').val(curr + value);
}
....
<s:form id="searchForm" method="POST" enctype="multipart/form-data">
<s:textfield id="term" name="term" label="Search" onkeyup="find(this.value)"/>
</s:form>
答案 0 :(得分:2)
我认为你想要的是来自Javascript UI的自动完成
见http://jqueryui.com/autocomplete/#multiple ...
它允许在搜索框中进行多次选择。
如果由于某种原因你不想使用它..你可以使用下面的代码
function split( val ) {
return val.split( /;\s*/ );
}
function selectS(value){
alert("clicked:" + value);
var curr = split($('#term').val());
// remove the current input
curr.pop();
// add the selected item
curr.push( value );
// add placeholder to get the comma-and-space at the end
curr.push( "" );
$('#term').val(curr.join( "; " ););
}
答案 1 :(得分:0)
学习基本的正则表达式。
var text = "foo";
var str = "asdf;qwerty;g";
var newStr = str.replace(/(;)?[^;]+$/,"$1" + text);
console.log(newStr);
使用拆分和连接
可以完成同样的事情var text = "foo";
var str = "asdf;qwerty;g";
var parts = str.split(";");
parts.pop();
parts.push(text);
var newStr = parts.join(";");
console.log(newStr);