【发布时间】:2015-10-08 17:22:35
【问题描述】:
所以我有一个input[type="text"],我想在其中粘贴 JSON 对象作为配置。控制台中的输出是完美的,所有内联都没有任何修剪,但现在input 我有很多间距。我想去掉那个间距并替换 input 值。
示例
$('#widget-json').on('input propertychange', function () {
var string = this.value.replace(/\s+/g, ''),
data = $.parseJSON( string );
$(this).val( string );
});
这几乎可以完成这项工作,但它也消除了引号内的间距。因此,如果我有一个像 "sentence": "Sure thing, good to go." 这样的键/值,它将被转换为 "sentence":"Surething,goodtogo.",而我想在引号内保留空格。
JSON 对象示例
{
"widget-effect": 3,
"widget-opacity-color": "#C7C9CF",
"widget-opacity-slider": "50%",
"widget-opt-close": false,
"widget-opt-scroll": true,
"widget-opt-totop": true,
"widget-text": "Spacing required within quotes"
}
所需的输出示例
{"widget-effect":3,"widget-opacity-color":"#C7C9CF","widget-opacity-slider":"50%","widget-opt-close":false,"widget-opt-scroll":true,"widget-opt-totop":true,"widget-text": "Spacing required within quotes"}
- 我试过了,
jQuery.trim( this.value ),但根本没用。 - 我试过了,
this.value.replace(/\s+/g, '')并删除了整个空格,即使在引号内也是如此。我知道这可能是正确的结果,但我不知道如何仅在引号之外将其删除。
我假设可以安装该正则表达式来跳过替换引号内的空格,但我一点也不熟悉。
【问题讨论】:
-
解析并重新序列化。
-
实际期望的行为是什么?
标签: javascript jquery regex json