KnockoutJS 在输入中显示转义字符但保存未转义

KnockoutJS show escaped characters in input but save not escaped

给定一个输入字段,例如 <input data-bind="value: myText"> 使用视图模型 self.myText = ko.observable('\t')。如何让输入显示 \t 而不是制表符?

文本字段用于决定文件中的分隔符应该是什么样子。如果该字段只显示一个选项卡,用户可能不知道已经存在一个值。

如果您在文本字段中输入 \t,它会保存正确的值“\t”。检索时,它将再次显示选项卡

我知道当我将默认值设置为 '\ \ t' 时它会起作用,但我不想转义它,因为我无法确定用户输入是否被 escaped/not 转义这很可能会导致错误

您可以使用 JSON.stringify 以字符串文字形式获取输出中包含的任何内容。 然后你可以从输出中删除外部引号(你可能想创建一个计算变量并在你的计算函数中将 myText observable 作为依赖项,然后每当用户使用任何 escape characters 它就会完成工作.

示例:https://jsfiddle.net/rnhkv840/24/

 str = "\t";
 self.myText = ko.observable(JSON.stringify(str).replace(/\"/g, ""))