JavaScriptjQuery:从值中提取字符串并用此字符串组成URL

JavaScriptjQuery:从值中提取字符串并用此字符串组成URL,javascript,jquery,string,url,extract,Javascript,Jquery,String,Url,Extract,我正在使用一个自动完成Javascript函数,我需要从“value”中提取最后5个字符,然后为onSelect编写URL 我使用的功能是: <script type="text/javascript"> var options, a; jQuery(function(){ var onAutocompleteSelect = function(value, data) { window.open('ITEM.PRO?id='+ val

我正在使用一个自动完成Javascript函数,我需要从“value”中提取最后5个字符,然后为onSelect编写URL

我使用的功能是:

<script type="text/javascript">
    var options, a;
    jQuery(function(){
      var onAutocompleteSelect = function(value, data) {
          window.open('ITEM.PRO?id='+ value);
        }

      options = { 
      serviceUrl:'JQUERY-SEARCH.pro',
      onSelect: onAutocompleteSelect,
       };
      a = $('#query').autocomplete(options);

    });
    </script>

var期权,a;
jQuery(函数(){
var onAutocompleteSelect=函数(值、数据){
window.open('ITEM.PRO?id='+值);
}
选项={
serviceUrl:'JQUERY-SEARCH.pro',
onSelect:onAutocompleteSelect,
};
a=$(“#查询”).autocomplete(选项);
});
当我点击搜索结果时,它会加载“ITEM.PRO?id=Article Brand Model Year Description 35612”,但我需要加载“ITEM.PRO?id=35612”

你能帮我吗?我是JS的新手。
提前谢谢大家

有几种不同的方法来实现这一点

最简单的方法是添加

value = value.slice(-5);
就在之前

window.open('ITEM.PRO?id='+ value);
这将
值设置为其最后5个字符。了解
String.slice
函数

如果要将值设置为最后一个“单词”,也就是说,由空格分隔,可以这样做:

value = value.split(" ").pop();
另一种方法是获取值中最后一个连续的数字字符串。为此,您可以使用以下方法:

value = value.match(/\d+/).pop();

当然,您使用哪种方法取决于您所拥有的输入最可靠的工作方式。

这是一个糟糕的解决方案,但在您列出的情况下会起作用。如果您发布更多详细信息,我将进行编辑:

<script type="text/javascript">
    var options, a;
    jQuery(function(){
      var onAutocompleteSelect = function(value, data) {
          window.open('ITEM.PRO?id='+ value.match(/\d+/)[0]);
        }

      options = { 
      serviceUrl:'JQUERY-SEARCH.pro',
      onSelect: onAutocompleteSelect,
       };
      a = $('#query').autocomplete(options);

    });
</script>

var期权,a;
jQuery(函数(){
var onAutocompleteSelect=函数(值、数据){
window.open('ITEM.PRO?id='+value.match(/\d+/)[0]);
}
选项={
serviceUrl:'JQUERY-SEARCH.pro',
onSelect:onAutocompleteSelect,
};
a=$(“#查询”).autocomplete(选项);
});

value.match(/\d+/)[0]
将字符串中的任何数字作为任何数组进行匹配,因此我们采用该数组中的第一项

而不是
window.open('ITEM.PRO?id='+值)
window.open('ITEM.PRO?id='+ value.split(' ').pop());
试试这个

var onAutocompleteSelect = function(value, data) {
          window.open('ITEM.PRO?id='+ value.substring(value.length-5));
        }

当您的ID超过5位时,您的代码将中断(如注释中所述)。您还可以使用@bordoz提到的
.split
方法,缺点是任何其他单词中的空格都会破坏此解决方案。或者您可以使用:

var url = 'ITEM.PRO?id='+ value.replace(/[^\d\.]/g,'');

只有当其他任何一个单词包含数字时,它才会失败。哪一个最适合您的情况?

请发布
JQUERY-SEARCH.pro
的示例输出。它是否发送了一个单独的
数据
数组,除了
建议
数组?@bozodz我也这么想,但他只要求最后五位数字。也许他知道id永远是五位数。换句话说,拆分不会破坏bozdoz的解决方案,因为他使用的是最后一个标记,由空格分隔。这意味着,只要id是最后一个,用空格分隔的项目有多少并不重要。@Peter-true:)不知何故,我没有看到这一点。它工作得很好!非常感谢你。我只需要字符串的最后5个字符。谢谢大家:)