重新格式化输入字段

时间:2009-04-14 12:54:49

标签: javascript html forms

我想在提交时重新格式化HTML表单字段的内容。

例如:用户输入“1.234,56”(这是此语言环境中数字的有效格式),但我想将值“1234.56”提交给服务器。

我想听听其他人对此的体验。你是怎么做到的?

我的第一个想法是onSubmit事件,它重新格式化内容。但是,是否有人对此实施有任何经验?

或者也许是一个更好的主意?


Javascript始终可用。如果使用Dojo更容易,我可以使用它。

顺便说一句:它实际上有点复杂,因为我也想重新格式化“模糊”。因此用户输入“1234,56”(输入格式)。焦点更改时,应重新格式化为“1.234,56”(显示格式)。但发送到服务器的实际值应为“1234.56”(机器格式) 在输入格式和显示格式之间进行转换应该很容易,但也许所有这些都可以巧妙地结合起来。


编辑:这不适用于公共网站,因此有关依赖Javascript和类似内容的观点不相关。

3 个答案:

答案 0 :(得分:1)

嗯,想到的一个想法可能是独占使用Javascript,并将实际输入的值存储到隐藏字段中。然后捕获文本框的onBlur Javascript事件,以调用根据您的要求格式化值的函数。

最后,在表单提交时,访问隐藏字段中的值,而不是文本框。

答案 1 :(得分:1)

鉴于这些信息,我可能会做以下事情:

模糊处理程序

  1. 获取输入
  2. 验证输入 - 是一个数字吗?它在范围内吗?等
  3. 转换为标准化表格以供展示(1.234,56)
  4. 将表单[input]的值设置为规范化表单
  5. 提交处理程序应该

    1. 获取输入
    2. 验证输入 - 与上述相同
    3. 从特定于语言环境的值转换为服务器上所需的值。
    4. 将表单的[input]值设置为转换后的值。
    5. 提交表格。
    6. 请记住,无论您做多少客户端验证,您仍然需要进行服务器端验证。但是我会在Javascript中做尽可能多的验证,因为我更愿意让用户知道他的表单值将会失败,而不必先对服务器进行验证。

      此外,我可能会更改服务器端操作,以便能够处理许多区域设置中的金额。这会让我在Javascript中的提交处理程序上有更多的摆动空间。

答案 2 :(得分:0)

你问这个问题的方式,你基本上想要在客户端验证,在任何情况下都应该是禁止的。只需提交数字并使用特定于语言环境的处理对服务器端进行验证。如果您想立即获得反馈,请使用AJAX,但要进行验证服务器端 - 您可以使用AJAX请求执行onBlur()。