2017-01-11 11 views
0

I(このanswerに触発)次のようにフォームをシリアル化しています。しかし、入力のいくつかは数値であり、文字列の代わりに数値を返すようにしたい。だから私の希望する出力は{"input1_name":"value1", "input2_name": 42}で、数字は引用符で囲まれていません。解析番号()

どうすればjQuery/JavaScriptでこれを達成できますか?

おかげで、

答えて

2

あなたが戻ってあなたが​​を使用することができます数に文字列を変換したい場合:

$.each(arr, function(){ 
    if (!isNaN(this.value)) { //check if value is convertible to number 
    result[this.name] = Number(this.value); 
    } else { 
    result[this.name] = this.value; 
    } 
}); 
+0

を渡すために覚えているも、条件が偽であります –

1

値が数値である場合は、手動で確認することができます。

$.each(arr, function(){ 
    if (!isNaN(this.value)) { //Check for non numbers negation 
    result[this.name] = Number(this.value); 
    } else { 
    result[this.name] = this.value; 
    } 
}); 
1

値を解析し、あなたがこれを試すことができますisNaN

function formToArray(jQueryObj){ 
var result = {}; 
var arr = jQueryObj.serializeArray(); 
$.each(arr, function(){ 
    result[this.name] =isNaN(parseInt(this.value))?this.value:parseInt(this.value); 
}); 
return result; 
} 
1

でそれを確認してください。

var result = { }; 
$.each($('form').serializeArray(), function() { 
    result[this.name] = Number(this.value) ? Number(this.value) : this.value; 
}); 
1

あなたはそれがより高速です数

に強制する"string" * 1を使用することができますNumberparseInt
あなたが使用している場合parseIntは基数にバグ、this.value ===「0」が見つかり10 parseInt(number, 10)

var converted = this.value*1; 
result[this.name] = isNaN(converted) ? this.value : converted; 
関連する問題