2011-01-03 22 views
0

値を削除:jQueryのカンマ区切りリストからのような入力が与えられ

<input type="test" value="3,4,9" /> 

コンマに問題がなくても、9,4または3のような値を削除するための最良の方法は何、私はしたくないしこれが終わる:

value="3,4," 
value="3,,9" 
value=",4,9" 

これをJavaScript/jQueryで行うには、きれいな方法がありますか?
fce: Split
fce: Join
http://www.w3schools.com/jsref/jsref_split.aspは、PHPの破と同様に

string.split(separator, limit) 

答えて

5

値を配列に分割し、不要な値を除外することができます。ここで

$("input[type='test']").val().split(",") // ["3","4","9"] 
.filter(function(v){return !isNaN(parseInt(v))}) // filter out anything which is not 0 or more 

が数値ではありません何も

var array = $("input[type='test']").val().split(","); 

// If you are dealing with numeric values then you will want 
// to cast the string as a number 
var numbers = array.map(function(v){ return parseInt(v)}); 

// Remove anything which is not a number 
var filtered = numbers.filter(function(v){ return !isNaN(v)}); 

// If you want to rejoin your values 
var joined = filtered.join(","); 

が最後にこれが別で議論されて

$("input[type='test']").val(joined); 
+0

nice、しかしこの場合は4です変数?どうやって4 a js varを作るのですか? – TheExit

+0

'filter'はtrueまたはfalseを返す関数をとります。 trueの場合、値は配列に保持され、falseの場合は削除されます。したがって、必要に応じてフィルタ機能を調整してください。理にかなっている? –

2

/機能

Array.prototype.remove = function(from, to) { 
    var rest = this.slice((to || from) + 1 || this.length); 
    this.length = from < 0 ? this.length + from : from; 
    return this.push.apply(this, rest); 
}; 

var explode = value.split(','); 
explode.remove(1); 
var implode = explode.join(','); 

ドキュメントを爆発:

+0

興味深いが、私はライン1と3はあなたの全体で接続されているかが表示されません例? – TheExit

+0

右、申し訳ありませんが、私のせい:(壊して終わる –

+0

:[ "3"、未定義の、 "9"] 3は、\t \t \t \t \t \tによってoutputed 9 \t \t \t varが(= values_input.valを爆発) 。スプリット('、'); \t \t \t \t \t \t \t \t \t [1]爆発削除します。 \t \t \t \t \t \t \t \t \t VARの破= explode.join( '')。 \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \tにconsole.log(爆発)。 \t \t \t \t \t \t \t \t \tにconsole.log(破)。 – TheExit

0

配列に文字列を分割するために使用

array = string.split(separator); 

。これを使って操作後に参加します。

0
var ary = value.split(','); 
ary.splice(indexOfItemToRemove,1) 
var result = ary.join(','); 
0

入力に値を変更フィルタリングするあまり簡潔なバージョンです。投稿:

remove value from comma separated values string

var removeValue = function(list, value, separator) { 
    separator = separator || ","; 
    var values = list.split(","); 
    for(var i = 0 ; i < values.length ; i++) { 
     if(values[i] == value) { 
     values.splice(i, 1); 
     return values.join(","); 
     } 
    } 
    return list; 
} 
1

ませjQueryが必要ありません:P

<script type="text/javascript"> 

    //var subject = '3,4,9'; 
    //var subject = '3,,9'; 
    var subject = ',,4,9'; 

    var clean = Array(); 
    var i = 0; 

    subject = subject.split(','); 

    for (var a in subject) 
    { 
     if(subject[a].length) 
     { 
      clean[i] = subject[a]; 
      i++; 
     } 
    } 

    document.write(clean.join(',')); 

</script> 
1

をあなたはまた、純粋なJavaScriptを使用することができます。

value = value.replace(/4,?/, '') 

または「3」と「9」:あなたが唯一の「4」を離陸したいとしましょう

value = value.replace(/([39],?)+/, '') 
関連する問題