我编写了一组javascript函数,允许我验证表单上的用户输入。我只想接受有效的输入,并强加以下行为:
当用户输入无效表单时,我会显示警告并通知他们输入的值不正确。至关重要的是,表格中的原始(有效)值不会改变。
只有在验证了值后才会更改该值。
例如,假设我只想在字段中接受正整数。
这是描述所需行为的事件序列。
场景1(有效输入)
场景2(输入无效)
[编辑]
我目前面临的唯一问题(即这个问题是寻求答案),是情景2,行动要点4.更具体地说,问题退化为以下问题:
如果我(以某种方式)确定用户输入的值无效,如何停止更改字段的值。这是真的,我只想回答。
我也在做服务器端检查,这个问题只是关于前端 - 即如果我确定值不正确则拒绝更改字段(表单文本输入)值。
顺便说一下,我正在使用jQuery,并希望以一种将行为与显示分开的方式实现这一点(我认为这是“不引人注目”一词的含义?)如上所述,如何实现此行为的任何建议都将非常感谢。
PS:我不想再使用另一个jQuery插件了。我应该能够使用jQuery +我已编写的简单的javascript验证函数。答案 0 :(得分:1)
加载页面时,是否无法创建隐藏的表单值或js变量,在该变量中存储字段的初始值/默认值?当他们更改表单字段时,验证它,如果它通过,则更新隐藏字段或js变量以匹配它们更新的字段中的字段。
当用户提供的输入验证失败时,显示无效条目以及错误消息,然后将表单字段更新回您保存的值,该值将是 默认值或他们输入的最后一个有效值。
修改强>
请注意,这只是我在上面的答案中解释的一个快速且非常脏的例子。如果您有很多输入,您可能希望将值存储在关联数组中而不是隐藏的表单值中,但这应该可以很好地处理我的建议。我还强烈建议您不要使用警报框来通知无效答案。
<html>
<head>
<script type="text/javascript">
function validate()
{
var field1 = document.getElementById("field1");
var saved = document.getElementById("field1_save");
if (field1.value < 0 || field1.value > 10)
{
alert("Field1 value of " + field1.value + " is invalid");
// Change the value back to the previous valid answer
field1.value = saved.value;
return false;
}
// Save the valid input
saved.value = field1.value;
return true;
}
</script>
</head>
<body>
Test User Input
<form name="form1" id="form1" method="post">
<input name="field1" id="field1" type="text" value="2" onblur="validate();"/>
<input name="field1_save" id="field1_save" type="hidden" value="2" />
<input name="btnSubmit" type="submit" value="Submit" />
</form>
</body>
</html>