首页 > 解决方案 > 打字时的javascript输入格式不起作用

问题描述

我需要帮助。我有一个输入框,我需要在输入时构建特定的格式。我需要 121.22'37” W 这是我的代码

function formatField(f) {
  f = f.replace(/[^0-9A-Za-z]/g, "")
  var n = f
  if (f.length >= 3) n = f.substr(0, 3) + "." + f.substr(3, 3)
  if (f.length >= 5) n += "’" + f.substr(5, 5)
  if (f.length >= 7) n += "”" + f.substr(7, 1)
  if (f.length >= 9) n += "W"
  return n
}
<input class="mrcinput" ${disabled( 'LATITUDE')} id="LATITUDE" maxlength="10" name="LATITUDE" onkeyup="this.value=formatField(this.value);" size="25" title="Latitude" type="text" />

标签: javascript

解决方案


你的逻辑一团糟。固定代码如下。然而,这并不是一个真正的好方法,因为它很难编辑,所以你需要backspace单独处理。

function formatField(source) {
  var n = '';
  f = source.replace(/[^0-9A-Za-z]/g, "")
  if (source[0] === ' ') f = ' ' + f;
  var n = f;

  if (f.length >= 3) n = f.substr(0, 3) + "." + f.substr(3, 2)
  if (f.length >= 5) n += "’" + f.substr(5, 2)
  if (f.length >= 7) n += "”"
  if (f.length >= 8) n += " W"
  return n
}
<input class="mrcinput" ${disabled( 'LATITUDE')} id="LATITUDE" maxlength="11" name="LATITUDE" onkeyup="this.value=formatField(this.value);" size="25" title="Latitude" type="text" />


推荐阅读