【问题标题】:Javascript Jquery: extract string from value and compose URL with this stringJavascript Jquery:从值中提取字符串并用这个字符串组成 URL
【发布时间】:2011-08-15 04:07:23
【问题描述】:

我正在使用自动完成 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>

当我点击搜索结果时,它会加载“ITEM.PRO?id=Article Brand Model Year Description 35612”,但我需要加载“ITEM.PRO?id=35612”

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

【问题讨论】:

  • 请发布来自JQUERY-SEARCH.pro 的示例输出。除了suggestions 数组之外,它是否发送了一个单独的data 数组?

标签: javascript jquery string url extract


【解决方案1】:

你能代替window.open('ITEM.PRO?id='+ value);吗?

window.open('ITEM.PRO?id='+ value.split(' ').pop());

【讨论】:

    【解决方案2】:

    有几种不同的方法可以实现这一目标。

    这个最简单的就是添加

    value = value.slice(-5);
    

    就在之前

    window.open('ITEM.PRO?id='+ value);
    

    这会将value 设置为其最后5 个字符。阅读here 了解String.slice 函数。

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

    value = value.split(" ").pop();
    

    另一种方法是取值中最后一个连续的数字字符串。为此,您可以使用:

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

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

    【讨论】:

    • @bozodz 我也这么认为,但他只要求最后五位数。也许他知道id永远是五位数。
    【解决方案3】:

    试试这个

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

    【讨论】:

    • 完美运行!非常感谢你。我只需要字符串的最后 5 个字符。谢谢大家:)
    【解决方案4】:

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

    <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>
    

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

    【讨论】:

      【解决方案5】:

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

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

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

      【讨论】:

      • 换句话说,拆分不会破坏 bozdoz 的解决方案,因为他正在使用最后一个标记,由空格分隔。这意味着有多少项目被空格分隔并不重要,只要 id 是最后一个。
      • @Peter - true :) 我不知何故没看到。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-08-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多