2009-04-14 119 views
0

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

例如:用户输入“1.234,56”(这是本地区中数字的有效格式),但是我想向服务器提交值“1234.56”。

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

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

或者更好的主意?


Javascript is always be available。如果使用Dojo更容易,我可以使用它。顺便说一下:它实际上更复杂一点,因为我也想重新格式化“模糊”。因此用户输入“1234,56”(输入格式)。当焦点改变时,它应该重新格式化为“1.234,56”(显示格式)。但发送到服务器的实际值应为“1234.56”(数据格式)。
输入格式和显示格式之间的转换应该很容易,但也许所有这些都可以用一些聪明的方式进行组合。


编辑:这不是一个公共网站,所以关于这取决于Javascript和相似的看法是不相关的。

回答

1

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

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

+0

我也想过这个。但是这可以使输入数据的大小加倍。这也可以处理,但看起来不太实际。 – myplacedk 2009-04-14 13:11:24

0

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

+0

我不同意客户验证是一件坏事。缺少服务器验证是一件坏事,但那是另一回事。 (和AJAX仍然联系服务器,这是多么浪费。) 而在这种情况下,将其格式化为客户端将是非常实用的。 – myplacedk 2009-04-14 13:09:12

1

给出的信息,我可能会做到以下几点:

模糊处理程序应该

  1. 获取输入
  2. 验证输入 - 是多少?它在范围内吗?等等。
  3. 转换为标准格式以供显示(1。234,56)
  4. 设置窗体的[输入]的数值,以标准化的形式

的提交处理程序应

  1. 获取输入
  2. 验证输入 - 同上
  3. 将特定于语言环境的值转换为您希望在服务器上的值。
  4. 将表单的[输入]的值设置为转换后的值。
  5. 提交表单。

请记住,无论您进行了多少客户端验证,您仍然需要执行服务器端验证。但是我会尽可能多地使用JavaScript进行验证,因为我更喜欢让用户知道他的表单值将会失败,而不必先到服务器。

此外,我可能会更改服务器端操作,以便能够处理许多语言环境中的金额。这会给我更多的Javascript提交处理程序的摆动空间。