2010-12-11 12 views
1

次の変数は選択ボックスの選択テキストです。これは選択ボックスのマークアップです。文字列と一致するか、不要な文字を文字列から削除する必要があります

<select name="SELECT___100E___7"> 
<option selected="" value="25">Beige/Almond</option> 
<option value="21">Blue [Subtract -$1.00]</option> 
<option value="27">Chrome [Subtract -$2.00]</option> 
<option value="29">Red [Add $1.00]</option> 
</select> 

選択したテキストを保持test_var変数...

$('select[name^="SELECT___"]').change(function(){ 
var test_var = $(this).find("option:selected").text(); 
}); 

それでは、私がやりたいことも、「$」を取り除く、金額以外のすべての文字を削除しています。 "Red [Add $ 1.00]"を選択した場合、test_varを1.00にします。

これを行うには問題があります。

+0

実際に製品の価格を計算するためにtest_varを使用しないことを願っています。それは簡単に虐待される可能性があります。 –

+0

ありがとう、笑。それは決して製品の実際の価格と何ら関係がありません。 – user357034

答えて

2

これはそれを行う必要があります(erが、実際には、以下の更新を参照してください):

var m = test_var.match(/(-?)\$([0-9\.]+)/); 
var result = m.length > 0 ? m[1] : ""; 

Live example

「の数字と.続く一連の$を探していると言う何キャラクターを集め、マッチングの際にできる限り多くのシリーズを手に入れます。得られた一致配列は、(位置0で$含む完全一致する文字列を有しており、最初の(そして唯一の)位置1   —でグループをキャプチャし、私たちはそれをつかむだろう。


更新はErが、あなたが-看板をキャプチャする必要がある場合は、UM、(と私はあなたが推測している)、これにそれを変更:

var m = test_var.match(/(-?)\$([0-9\.]+)/); 
    var result = m.length > 0 ? m[1] + m[2] : ""; 

Live example

これは、$の前に存在する場合は-のオプションのキャプチャを使用し、2つのキャプチャグループ(m[1]およびm[2]; m[1]は、-がない場合は ""になります)。 (例えば)

結果:オフトピック

Red [Add $1.00]  => 1.00 
Blue [Subtract -$1.00] => -1.00

:ローカライズを注意してください!一部の地域では、.,秒となります。たとえば、ドイツでは1ユーロで「€ 1,00」となります。

+0

+1と ' - 'に関する注釈に感謝します。 – user113716

2

おそらくクリーナーアプローチは、単純にカスタム属性を使用することです:@T.J. Crowderこれは-を削除し、指摘したように:オリジナルの答え

$(this).find("option:selected").attr('data-amount'); 

<option value="21" data-amount="1.00">Blue [Subtract -$1.00]</option> 

その後.attr()を使用しますこれはおそらく必要である。そうでない場合、これは機能します。

正規表現を使用することはできますが、必要はありません。

あなたがテキストのレイアウトを持っているだろう知っている場合、あなたはこのような何かを行うことができます:

var result = test_var.split('$')[1].slice(0,-1); 

それは最後の文字]を削除し、$に分割します。

+0

これはオプションの '-'を削除します(例:" Blue [Subtract - $ 1.00] ")。 @userがそれを望んでいるかどうかはわかりませんが、私はそれがそうでないと推測しています。そうでなければ、量は少し誤解を招きます。 :-) –

+0

@ T.J。 Crowder:非常に良い点。それが必要である可能性があります。私は更新します。 – user113716

+0

+1の 'data-amount'です。テキストはかなり解析可能ですが、依然としてより洗練されたアプローチであり、ローカライゼーションに役立ちます(属性に「1.00」を付けることができますが、ロケールに適している場合は「1,00」を表示できます)。 –

関連する問題