HTML禁止某些字符

时间:2015-01-07 22:11:11

标签: html

我正在创建一个HTML表单,我的表单中有文本字段,要求人们填写他们的名字。在填写姓名时,我不想让用户填写任何这些字符 -

! @#$%^& *()_ - + = {[}] | \:; " ' < ,> 。 ? / 1 2 3 4 5 6 7 8 9

我能以某种方式做到这一点吗?谢谢!

1 个答案:

答案 0 :(得分:0)

好吧,你应该在客户端使用Javascript检查这些字符,在服务器端使用你正在使用的任何东西,PHP,ASP.NET等来检查这些字符。让我解释为什么你需要每个

您应该进行javascript验证,因为您希望用户在输入不允许的字符时看到他们做错了什么。例如,如果红色测试无效,您可以在红色测试中发出警告。

您可能会认为这会解决问题,除非您的用户很狡猾,并且试图与您联系。他们可以强制向您的服务器提交您已经使用javascript检查过的服务,如果他们实际上一直在使用未经修改的页面。他们可以轻松地将您的javascript重写为他们想要的任何东西。但是,如果验证码在服务器获得提交时在服务器上运行,则无法重写验证码。

所以javascript是为了用户友好,服务器代码是为了安全。

我不知道你正在使用什么后端,所以我无法真正帮助它,但它在功能上与javascript代码非常相似。我们走了。

这是一个带有表单的示例html文档:

<html>
    <form
        name="signupForm" action="registerUser.asp"
        onsubmit="return validateForm()" method="post">

        First name: <input id="nameInput" type="text" name="name">

        <input type="submit" value="Submit">
    </form>
</html>

好的,现在这里有一些附带的javascript来实现我们看到的validateForm()函数:

function validateForm() {
    var x = document.forms["signupForm"]["name"].value;

    if (x == '!' || x == '@' || x == '#' || ... all your other conditions too ...) {
        alert("Name cannot contain ... blah blah blah... characters.");
        return false;
    }
}

那就是你会做的。请记住,使用警报功能是不受欢迎的。这真的过时了,只是没有良好的用户体验。也许您可以放入一行javascript来使输入框附近的隐藏文本消息可见,而是显示消息。我相信你以前见过那种东西,它比令人讨厌的弹出式消息更令人愉快。你不是要试图惩罚你的用户输入错误。

希望这会有所帮助。此外,您可能需要考虑允许使用连字符,它们在人们的合法名称中非常常见。如果这是您对数据库输入进行sanatizing的方法,那么您的做法是错误的。