Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/428.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django中Javascript驱动的表单_Javascript_Django_Validation_Django Forms - Fatal编程技术网

Django中Javascript驱动的表单

Django中Javascript驱动的表单,javascript,django,validation,django-forms,Javascript,Django,Validation,Django Forms,Django使用他的API进行输入验证。表单被发送到模板,并呈现为html 用户准备好后,发布表单,验证数据,如果表单无效,则在模板上重新呈现表单 当表单因为缺少足够的字符(例如字段的最小长度)或无效字符而无效时,这是很奇怪的:一篇文章太多,只是为了告诉用户它缺少一些非常基本的内容 那么,Django或app是否有任何可用的方法来使用javascript代码呈现表单,该代码在客户端测试[*]表单的某些字段?也就是说,有一个呈现为_javascript的表单。。。动态显示将由form.errors

Django使用他的API进行输入验证。表单被发送到模板,并呈现为html

用户准备好后,发布表单,验证数据,如果表单无效,则在模板上重新呈现表单

当表单因为缺少足够的字符(例如字段的最小长度)或无效字符而无效时,这是很奇怪的:一篇文章太多,只是为了告诉用户它缺少一些非常基本的内容

那么,Django或app是否有任何可用的方法来使用javascript代码呈现表单,该代码在客户端测试[*]表单的某些字段?也就是说,有一个呈现为_javascript的表单。。。动态显示将由form.errors显示的错误消息

这不应该适用于所有字段,因为有些字段需要数据库命中,但它应该适用于简单和最常见的字段,即CharField、TextField等


[*]测试,因为验证也总是在服务器端进行。

因此您希望在提交之前验证JS中的某些内容。这里有一种方法。 不应在表单中输入submit类型的输入,而应输入button类型的按钮:

<form id="my-form" submit="...">
  ...        
  <input type='button' id='submit-button' value="Save">
</form>
测试人员示例错误:

function testErrors() {
    var country         = $("#id_country").val();
    var city            = $("#id_city").val();

    var errors = "";
    if (country == "") {
        errors += "- Please select a country\n";
    }
    if (city.length <= 10 ) {
        errors += "- Your city name is too short\n";
    }
    return errors;
}

因此,在testErrors中,您可以为每个字段定义自己的测试。在这个例子中有两个,国家和城市。对于country,代码测试它是否为空,对于city,代码是否超过10个字符。您可以定义自己的进一步测试。请参阅jQuery文档,了解如何从不同类型的表单字段中检索值。

这与我所说的我想要避免的内容相当:一篇文章太多,只是为了告诉用户它缺少一些非常基本的内容。我所看到的是一种用javascript代码和错误消息呈现表单的方法。我不确定您是否仔细阅读了JS部分。在提交之前,它会测试您在TesterErrors中定义的错误,如果没有错误,则执行.submit命令。我不知道在提交之前如何将服务器端错误消息集成到表单中,也不知道是否可能。这里唯一的额外工作是,您必须为JS代码中的每个字段创建测试,但这对于jQuery选择器来说应该是微不足道的,而且用户在提交之前会发现错误。但是对于jQuery选择器来说,这应该是微不足道的。很抱歉,但我不明白为什么它如此微不足道。我的问题正是关于这个琐碎的部分,而不是单击并提交JQuery功能。我现在编辑了我的答案。如果之前的评论被认为傲慢,我表示歉意。在任何情况下,我认为您都无法使用嵌入式JS创建Django表单。至少在某种程度上比我刚才展示的要简单。如果你能做到这一点,请接受答案。谢谢,我知道这个解决方案。我正在尝试看看是否有人知道有任何实现可以抽象出您所展示的JS代码,即让表单自己生成JS。
function testErrors() {
    var country         = $("#id_country").val();
    var city            = $("#id_city").val();

    var errors = "";
    if (country == "") {
        errors += "- Please select a country\n";
    }
    if (city.length <= 10 ) {
        errors += "- Your city name is too short\n";
    }
    return errors;
}