2011-08-15 13 views
2

オートコンプリートJavascript関数を使用しています。最後の5文字を​​ 'value'から抽出してからonSelectのURLを作成する必要があります。私が使用していますJavascript Jquery:値から文字列を抽出し、この文字列で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ブランドモデルイヤー説明35612」ロード結果が、私は「ITEM.PROをロードする必要がある場合は? id = 35612 "

お手伝いできますか?私はJSの完全な初心者です。 ありがとうございます!

+0

「JQUERY-SEARCH.pro」のサンプル出力を投稿してください。 'suggestions'配列のほかに、別の' data'配列を送りますか? –

答えて

0

あなたのIDが5桁を超えた場合には(コメントに記載されているように)、あなたのコードが解除されます。この

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

それは完璧に動作します!どうもありがとうございました。文字列の最後の5文字だけが必要です。ありがとうございました:) –

1

これを達成する方法はいくつかあります。

この最も簡単なのはこれが最後の5つの文字にvalueを設定し、右

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

value = value.slice(-5); 

を追加することです。 String.slice機能についてはhereをお読みください。

あなたがスペースで区切られた、いわば、最後の「言葉」に値を設定したい場合は、代わりにこれを行うことができます:

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

もう一つの方法は、数字の最後の連続文字列を取ることであろう値でそのためには、次のようにしてください:

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

どの方法を使用するかは、入力内容に最も信頼できるものによって決まります。

+1

idが5桁を超えない限り、これはうまくいくはずです。 – bozdoz

+1

@bozodz私はそれも考えましたが、彼は最後の5桁を求めました。たぶん、彼は、IDは常に5桁であることを知っている。 –

0

これはひどい解決策ですが、あなたがリストした場合にはうまくいくでしょう。あなたはより多くの細部を投稿する場合、私は編集します:

<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]は、任意の配列として、あなたの文字列の任意の数字と一致しますので、私たちはその配列の最初の項目を取ります。

2

window.open('ITEM.PRO?id='+ value);の代わりにこれを行うことができますか?

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

を試してみてください。また、@ bordozに記載されている.splitのアプローチを使用することもできますが、他の言葉のスペースがこの解決策を打破するという欠点があります。あるいは、次のものを使用することができます:

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

他の単語のいずれかに数字が含まれている場合にのみ失敗します。あなたの状況に最も適したものはどれですか?

+0

別の言葉で分割すると、スペースで区切られた最後のトークンを取っているので、bozdozの解を破ることはありません。つまり、IDが最後のものである限り、スペースで区切られたアイテムの数は関係ありません。 –

+0

@Peter - true :)私は何とかそれを見ることができませんでした。 – karim79

関連する問題