警告Django形式的非ASCII字符 - javascript

我正在尝试为我的Django表单添加一些客户端Ajax验证。我要警告用户,因为他们正在输入字段,如果他们刚刚输入的任何字符都不是ascii。

我最初将基本的python放在表单的clean方法中以检查ascii字符。但是,我不想这样做,因为我不想产生错误,而是发出警告消息,然后让用户继续执行表单的其余部分。

try:
    field_value.decode('ascii')
except UnicodeEncodeError:
    #raise forms.ValidationError("Non-ASCII characters may cause issues in registering your data. Consider removing these characters. You may still submit at your own risk.")
    # Just want to show a warning so the user can still submit the form if they wish

我想在用户输入时在字段下显示一个小的警告。我试过使用django-dajax,但不确定。我怎样才能做到这一点?

编辑:
为了澄清,我想在用户提交表单之前显示警告。因此,当他们填写表格时...

参考方案

使用JavaScript验证该表单字段。

示例(使用jQuery):

<form>
    <input name="whatever" id="fieldId">
    ...
</form>

<script type="text/javascript">

    /* Define a function to check the form field value */

    function containsAllAscii(str) {
        return  /^[\000-\177]*$/.test(str); // returns true if all are ASCII characters. false otherwise. 
    }

    /* Now a little jQuery */

    $('#fieldId').on('change', function() {
        str = $(this).val();
        is_valid = containsAllAscii(str);

        if (!is_valid) {
            window.alert("There are Non-ASCII characters in the input field");
        }
    });   
</script>

上面的代码会在每次更改(即失去焦点)时检查给定字段的值。您可以使用.on('keyup', ...代替.on('change', ...,这将在用户键入时检查字段的值。

最后,显示的错误消息只是浏览器警报。太烂了。您可以显示一条漂亮的错误消息,您只需要学习更多jQuery。但我希望我给您一个很好的起点。

学分:

containsAllAscii功能的代码是this answer从Juan Mendes摘录的。

什么是最好的免费JavaScript模糊处理程序,可以作为javascript库或python库使用 - javascript

我关注这篇文章:Free JavaScript obfuscators?找到一个JavaScript混淆器,可以帮助我在客户端混淆一些JavaScript数据。但我发现这些选择都不是python或javascript lib,they use java,我使用django,所以我想知道,最好的免费JavaScript混淆器是javascript库或pytho…

Javascript-从当前网址中删除查询字符串 - javascript

单击提交按钮后,我需要从网址中删除查询字符串值。我可以用jQuery做到这一点吗?当前网址:siteUrl/page.php?key=value 页面提交后:siteUrl/page.php 实际上,我已经从另一个带有查询字符串的页面着陆到当前页面。我需要在页面首次加载时查询字符串值以预填充一些详细信息。但是,一旦我提交了表格,我就需要删除查询字符串值。我已…

Django调试工具栏错误的路径 - javascript

我创建了一个Django应用,并将其部署到服务器上。我使用了一些额外的django功能,例如django-debug-toolbar,该功能是使用pip从我的requirements.txt文件中安装的。当我在localhost上本地运行应用程序时,一切正常,并且额外功能已成功加载。这是加载的源的正确结构:但是当我出于某种原因从服务器运行我的应用程序时,路径…

Django在初始化中将波兰语字符传递给Angular会导致lexer错误 - javascript

这是问题所在-我想使用init从Django传递到Angular数据。我将通过以下方式进行操作:<div ng-init="supervisor={{supervision.supervisor}}"> 哪个看起来还好吧?但是,一旦变量{{supervision.supervisor}}包含Lexer Error: Unexp…

Mongo汇总 - javascript

我的收藏中有以下文件{ "_id": ObjectId("54490b8104f7142f22ecc97f"), "title": "Sample1", "slug": "samplenews", "cat": …