2012-01-25 16 views
0

選択したチェックボックスに基づいて文字列を作成しています。選択された複数の文字列がある場合は複数形を追加する声明を書いたが、配列によって 'policyHidden'フィールドに入れられた最後の2つのカンマを削除する方法はわからない。文字の最後の2つのインスタンスを削除する

$(document).ready(function(){ 
    $('input:checkbox').change(function() { 

     var keys = []; 

     var policies = $('input:checkbox:checked').map(function() { 
     return $(this).siblings('span').text(); }).get(); 

     $.each(policies, function(key, value) { keys.push(value) }); 

     output = keys.join(", "); 

     FormSetFieldValue('policyHidden', output); 

     if (keys.length > 1) { 
     keys.splice(keys.length - 1, 0, "and"); 
     } 

     FormSetFieldValue('policyHidden', output); 

    }); 
}); 

出力例は、私はちょうど最後の2つのコンマを削除したい

value1, value2, and, value3 

です。私は正規表現を行う必要がありますか?

FYI、FormSetFieldValueは別のスクリプトの関数です。最初の変数は変更したい変数を呼び出し、もう1つは設定値です。手元の問題に何ら影響を与えてはならない。

+0

オックスフォードカンマを残しておいてください –

+0

@タンジュ - 彼はしないでください。それは恐ろしいね。 –

+0

@tanduこれはクライアントの要求にかかっていましたが、私はこの1つでJosephと同意します – dstrunk

答えて

1

私はそれをそこに置く - そしてそれを取り除く - は直感的ではないと思います。あなたは最初の場所であなたの文字列にそのようにそれを置くべきではありません

var output = []; 
output[1] = keys.pop(); 
output[0] = keys.join(', '); 

output = output.join(' and '); 

ここでフィドルです:http://jsfiddle.net/yfKjp/

+0

私よりもはるかにエレガントです。ええ、私は一緒に "タイムクライシスの初心者プログラマー"として配置されました。ありがとう! – dstrunk

+0

@silentpost - 実際には、それを考えるようになる。既に '.pop()'を使用している場合、 '.slice()'は必要ありません。私は自分の答えを更新しました。 –

1

正規表現は一つの選択肢です。あなたはまた、Javascriptをする機能を置き換える行うことができます「及び、」で 『と』

var str = "value1, value2, and, value3" 
str.replace(', and,',' and') 

あなたはコンマをエスケープする必要があります。

関連する問題