javascript - 打字时的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" />
解决方案
你的逻辑一团糟。固定代码如下。然而,这并不是一个真正的好方法,因为它很难编辑,所以你需要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" />
推荐阅读
- android - 如何强制 Android Go 10.0 允许 Overlay
- algorithm - 如何解决这种递归关系?
- asp.net - 使用 openapi 连接服务和 IFormFile 时的状态 400 内容类型边界 webapi
- google-analytics - 可以从第三方 Web 应用程序跟踪 Google Analytics 信息吗?
- haskell - 努力实现一个计时器
- python - Selenium chrome webdriver 在本地工作但不在heroku中
- linux - 在一行中将文件添加到所有目录
- python - 在 GCS 存储桶中读取 JSON 文件时出现 JSONDecodeError
- google-apps-script - 当我在特定范围内编辑时的 msgBox
- react-native - 反应原生如何记忆内联函数