在键入HTML文本输入时,验证HTML文本输入的最佳方法是什么?我所知道的所有方法都有一些缺点:
使用$.keypress您只能访问输入的旧值,而不是新值.此外,将无法检测到某些事件(如使用鼠标进行剪切/粘贴).
$.change仅在输入失去焦点时才使用.
这个问题提出了一个解决方案,您可以使用轮询来监视属性更改.原则上,可以在回调中验证新值,如果无效则可以恢复为旧值.然而,除了要求投票之外,我不确定它是否没有竞争条件.
本文建议使用浏览器特定功能,如果没有可用则回退到轮询.看起来是迄今为止最好的方法.
[更新]如答案中所指出的,$.keyup更新后可以访问该值.但是,它不仅不适用于鼠标剪切/粘贴,而且如果按住某个键也会失败,只有在输入很多内容后才会释放.或者,如果组合keydown并keyup保存/恢复旧值,则在用户键入太快时会中断.
以上解决方案都没有错误或非常安全的跨浏览器.那里有更好的解决方案,既可以随时使用,也可以在制造中使用?似乎是一个常见的问题,我最近试图回答类似的 问题,没有成功,我也对答案感兴趣.
(对于这种做法的一个好的论据也是受欢迎的,如果实施此验证会出现新的问题;但是,这在其他语言中似乎是常见的,所以我怀疑这是一件坏事要想)
我有信用卡号码表格.该号码分为四个部分,就像真实的信用卡一样.
我想在表单中添加JavaScript品味,当用户在字段中键入四个字母时,焦点会自动转到下一个标签.但不是在最后一个标签.通过这样做,用户不必键入"tab"键来移动焦点.
可以在标签中添加一些额外的类,ID或名称.
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title>MoveFocus</title>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>
<script type="text/javascript" charset="utf-8">
$(function() {
// some code goes here.
});
</script>
</head>
<body>
<form action="post.php" method="post" accept-charset="utf-8">
<input type="text" value="" id="first" size="4" maxlength="4"/> -
<input type="text" value="" id="second" size="4" maxlength="4"/> -
<input type="text" value="" id="third" size="4" maxlength="4"/> -
<input type="text" value="" id="fourth" size="4" maxlength="4"/>
<p><input type="submit" value="Send Credit Card"></p>
</form>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)