Javascript以防止无效的用户输入

时间:2010-02-14 14:28:50

标签: javascript jquery

我编写了一组javascript函数,允许我验证表单上的用户输入。我只想接受有效的输入,并强加以下行为:

当用户输入无效表单时,我会显示警告并通知他们输入的值不正确。至关重要的是,表格中的原始(有效)值不会改变。

只有在验证了值后才会更改该值。

例如,假设我只想在字段中接受正整数。

这是描述所需行为的事件序列。

场景1(有效输入)

  1. 在输入字段
  2. 中加载有效默认值的表单
  3. 有效号码的用户类型
  4. 输入字段值已更新(按照正常的表单行为)
  5. 场景2(输入无效)

    1. 在输入字段
    2. 中加载有效默认值的表单
    3. 无效号码的用户类型
    4. 警告框显示警告('无效值')
    5. 输入字段值未更改(即该值与用户输入无效数字前的值相同)
    6. [编辑]

      我目前面临的唯一问题(即这个问题是寻求答案),是情景2,行动要点4.更具体地说,问题退化为以下问题:

      如果我(以某种方式)确定用户输入的值无效,如何停止更改字段的值。这是真的,我只想回答。

      我也在做服务器端检查,这个问题只是关于前端 - 即如果我确定值不正确则拒绝更改字段(表单文本输入)值。

      顺便说一下,我正在使用jQuery,并希望以一种将行为与显示分开的方式实现这一点(我认为这是“不引人注目”一词的含义?)

      如上所述,如何实现此行为的任何建议都将非常感谢。

      PS:我不想再使用另一个jQuery插件了。我应该能够使用jQuery +我已编写的简单的javascript验证函数。

1 个答案:

答案 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>