我有一个 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, '')
,这会将整个字符串中的空格全部删除,包括引号内部的空格。虽然这可能是正确的结果,但我不知道如何仅删除引号外部的空格。
我猜测这个正则表达式可以被调整为跳过替换引号内部的空格,但我对此并不熟悉。