代码之家  ›  专栏  ›  技术社区  ›  jeffery_the_wind

用于更漂亮数据的窗体输入掩码

  •  0
  • jeffery_the_wind  · 技术社区  · 7 年前

    我有一个很大的表单,它只是jQuery的原生web内容。它有很多字段,比如200个,我们定期添加和删除字段。我有一个要求,使所有的数字显示逗号作为千分隔符,并为日期总是显示在本地化格式。

    现在,now将以原始格式显示:10000000。目标是在输入中显示10000000。

    我不想接触数据库更新的服务器端代码,所以将客户机上的所有逻辑都保存在JavaScript中。用户也可以正常输入信息,但一旦输入完毕,就可以用逗号显示任何数字。 toLocalizedString

    我开始捕捉输入事件,检查其中是否有数字,并添加逗号。然后在提交时,我需要一个例程来删除逗号,但前提是它们是由我的程序放入的。

    我觉得我以前见过这样的功能,但我还没有找到一个完美的解决方案。在数据的源格式和显示给用户的格式之间需要有一些分歧。我希望能够向用户显示他们的数据的表示,而不需要实际更改单元格中的数据。不确定是否可能。

    我在想这个问题也许有个优雅的解决办法。

    1 回复  |  直到 7 年前
        1
  •  1
  •   Aleris    7 年前

    例如(伪代码):

    class Model {
        value: number
    }
    
    class ViewModel {
        value: string
    }
    
    class ViewModelMapper {
        toModelView(model: Model): ModelView {
        }
        toModel(modelView: ModelView): Model {
        }
    }
    

    当从服务器加载数据时,您需要从模型到视图模型进行转换,并在保存到服务器之前进行转换。您将使用视图模型在UI中显示数据,并使用模型与后端通信。

    您可以使用现有的输入掩码库,这些库已经在做这些工作了。比如说 jQuery-Mask-Plugin

    这个问题有点笼统,也许你想补充一些具体的细节。