如何删除部分用户输入的值并将新值附加到输入框

时间:2013-05-14 04:33:43

标签: javascript jquery

我有一个搜索框和一个建议框来显示建议。

用户在搜索框中输入内容后,系统会显示建议,然后用户可以选择其中一个建议添加到搜索输入框中。之后,用户将能够键入其他条款以接收建议等。

我可以显示建议并将所选建议添加到输入框,但

让我们说用户输入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>

2 个答案:

答案 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);