当前位置: 首页 > 知识库问答 >
问题:

是否可以强制网站输入为英语?

伏欣悦
2023-03-14

我正在创建一个网站(快速网络)在2种语言-英语和希伯来语。我有一个输入字段(段塞/用户名),必须是英文(字母数字拉丁字符)。当我从手机进入网站时,我可以用希伯来语写文本。在这个输入字段中,是否可以强制键盘为英文?我注意到电子邮件地址(电子邮件输入)的键盘已经是英文的了。

更新:在服务器端,我们会验证输入。我不想在客户端验证输入(使用JavaScript)或阻止用户键入希伯来字符(这可能会在以后完成),但我想导致(强制)默认键盘语言为英语。我注意到,对于电子邮件和密码,当我将它们的方向设置为ltr时,键盘的默认语言是英语。但不是在段塞/用户名字段上。

我测试的浏览器会自动验证电子邮件输入是否为英语。你不能在那里使用希伯来文字符。

我搜索了一下,在堆栈溢出或其他方面没有找到类似的问题。

slug字段可能包含由服务器转换为破折号的任何非字母数字字符。例如Aa=Bb!1@2#3$4V由服务器转换为aa-bb-1-2-3-4-56,这是用户在Speedy Net上的有效slug。然而,אא-בב-1-2-3-4-56不是快速网络上的有效slug。用户的slug必须至少以4个拉丁字母开头。

当页面使用希伯来语时,问题就出现了。如果页面是英文的,就没有问题。

在我的网站上键入第一个

共有3个答案

淳于涛
2023-03-14

在验证方面,

就显示正确的屏幕键盘而言,我认为[错误地]使用type=“电子邮件”和上面的结合是你目前最好的选择*-在所有支持的类型中,它是唯一一个在允许字母输入的同时自动切换到拉丁语的类型-而如果模式禁止该范围,浏览器最好接受提示,而不显示区域键盘,规范确实需要在这方面做出任何具体努力。

input:invalid {
outline: 2px solid red;
}
<input placeholder="username" title="English only!" pattern="[\x00-\x7F]+"/>

龚鸿雪
2023-03-14

您不能强制语言本身(文本输入只知道字符,它对语言一无所知,实际上用户名是一个相当任意的字符序列,不一定是现有语言中的现有单词),但是您可以将允许的字符限制为ascii(它其实是你真正的需要)。

在后端(django),您可以使用slug的现有代码(cf models.SlugField和validators.validate\u slug),或者编写自己的验证器以满足更具体的需要。

在前端,您可以选择一些简单的老式解决方案,比如这个,或者使用输入的模式属性。

注意:由于Django特定的后端部分,我没有投票结束你的问题,但是你真的应该在发布你的问题之前搜索一下,因为这里和其他地方已经有很多类似的问题了...

蒋烨然
2023-03-14

我认为你有两个选择。

第一种方法是让用户输入他们想要的任何内容,但是在后端使用一个验证器,它只接受带有拉丁字符的用户名。

class UsernameValidator(validators.RegexValidator):
    regex = r'^[\w.@+-]+\Z'
    message = _(
        'Enter a valid username. This value may contain only letters, '
        'numbers, and @/./+/-/_ characters.'
    )
    flags = 0


class YourUser(User):
    username = models.CharField(
            _('username'),
            max_length=150,
            unique=True,
            help_text=_('Required. 150 characters or fewer. Letters, digits and @/./+/-/_ only.'),
            validators=[UsernameValidator()],
            error_messages={
                'unique': _("A user with that username already exists."),
            },
        )

第二种是使用某种JavaScript掩码库,比如https://imask.js.org/这样你就可以防止用户插入任何你不想让他们插入的数据,但是无论如何,如果你遵循这种方法,你应该在后端验证数据

 类似资料:
  • 好的,这里有一些东西:我有一个元素 当用户在这个元素中键入内容时,我需要这个元素来强制将键盘布局从任何其他语言切换到英语。我不需要将其发送到服务器。我只需要在输入时强制切换语言。 有人有简单的JS解决方案吗? 这是我一直在想的:理论上。如果我知道它应该转换的语言,那么我就可以写一个JS,把每个符号都替换成英语

  • 我想知道OpenCV是否能够将摄像头(dev/video1)设置为复合或S-video输入。 我使用的摄像头仅在复合输入中运行,但默认情况下,v4l2在S-Video输入中打开dev/video1。V4l2能够通过QT V4l2 utils应用程序从S视频转换为复合输入。 opencv正在使用v4l从相机捕获图像,我想在代码中使用OpenCV更改为复合输入。那有可能吗?如果不是,解决办法是什么?

  • 在crosswalk中,可以使用cordova插件 而cordova inAppBrowser似乎工作得很好。但它仍然使用旧的android浏览器,而不是crosswalk chromium(因此不支持所需的HTML5功能)。 我可以通过检查user-agent(例如:

  • 问题内容: 是否可以在Java 8中强制转换流?说我有一个对象列表,我可以做这样的事情来过滤掉所有其他对象: 不过,在此之后,如果我想与客户做点事情,则需要对每个客户进行转换: 这看起来有点难看。是否可以将整个流转换为其他类型?像蒙上了一个? 请忽略以下事实:这样做可能意味着不良的设计。我们在计算机科学课上做了类似的事情,所以我一直在研究Java 8的新功能,并且好奇是否有可能。 问题答案: 我认

  • 问题内容: 我正在将URL加载到Webview中以将其显示在我的应用中。我遇到的问题是,网站并非总是能识别出我是手机(为什么如此?)。如何强制Webview发送到我的手机网站?目前我正在那样做 但这行不通吗?因为我没有使用iPhone,所以行不通吗?我不认为这是原因,因为它只是设置用户代理… 这是相关的代码(不相关的代码仅包含诸如从意图中获取url和格式化字符串等数据) 我还为用户代理尝试了此字符

  • 有没有什么方法可以将控制台输出镜像到java中的localhost,甚至可以添加一些不错的CSS。如果同一网络中的其他设备也能到达控制台,那就太酷了。我做了很多关于这个主题的研究,但没有找到任何关于这个的网站/线程/问题。帮助将不胜感激!