【问题标题】:form validation not working django-angular表单验证不起作用 django-angular
【发布时间】:2015-03-27 08:16:19
【问题描述】:

在表单中使用前缀时不会显示表单验证错误

当表单使用 scope_prefix 时,验证会中断。 错误消息停止显示,例如“需要字段”中断。

下面的例子:

 class ExampleForm(NgModelFormMixin, NgFormValidationMixin, forms.ModelForm):   
   form_name = 'example_form_name'
   controller = "ExampleFormController"

   def __init__(self, *args, **kwargs):
      kwargs.update(scope_prefix="formData")
      super(ExampleForm, self).__init__(*args, **kwargs)

html:

 <form name="{{ form.form_name}}" ng-controller="{{ form.controller}}" novalidate>
     {{ form }}
    <button type="submit" ng-disable="{{ form.form_name }}.$invalid"></button>
 </form>

html 呈现为:

  <form name="example_form_name" class="ng-pristine ng-invalid ng-invalid-required" ng-controller="ExampleFormController" novalidate>

   <ul class="djng-form-errors ng-hide" ng-show="example_form_name.$dirty"></ul>
   <ul class="djng-form-errors" ng-show="example_form_name.$pristine">
     <li ng-show="example_form_name.$message" class="invalid ng-binding ng-hide" ng-bind="example_form_name.$message"></li>
   </ul>
   <ul class="djng-field-errors ng-hide" ng-show="example_form_name.textarea.$dirty">
   <li ng-show="example_form_name.textarea.$error.required" class="invalid">This field is required.</li>
   <li ng-show="example_form_name.textarea.$valid" class="valid ng-hide"></li>
   </ul>
   <ul class="djng-field-errors" ng-show="example_form_name.textarea.$pristine">
     <li ng-show="example_form_name.textarea.$message" class="invalid ng-binding ng-hide" ng-bind="example_form_name.textarea.$message"></li>
  </ul>
   <p>Label <textarea cols="40" name="textarea" ng-model="formData.textarea" ng-required="true" rows="10" class="ng-pristine ng-invalid ng-invalid-required" required="required"></textarea></p>
            <button class="submit" ng-disable="example_form_name.$invalid">Submit</button>
  </form>

控制器

controllers.ExampleFormController = function($scope) {
  $scope.formData = {};
  $scope.formSubmit = function() {
     // form submit actions
  }
}

但验证不起作用..如果我删除 scope_prefix 一切正常。 我正在使用 django-angular 0.7.0 我在这里错过了什么..

谢谢

【问题讨论】:

  • @sri_kanth 你解决过这个问题吗?如果是这样,您可以发布答案吗?我有同样的问题。谢谢
  • 能贴出控制器代码吗?
  • 我的直觉是您缺少 $scope.formData 的初始化。发布控制器代码后,我可以验证。这是一个工作小提琴。删除 textarea 的正文,关闭标签,它可以工作:jsfiddle.net/5b9gbnpL/1
  • 因此控制器中没有太多代码。 @dubhov 在控制器中为变量提供了一些值,给出了错误消息,但正在提交表单而没有更正错误 - 我的意思是 ng-disable="example_form_name.$invalid" 不起作用。看看这个 - jsfiddle.net/rsrikanth080/5b9gbnpL/2
  • 一年前来自 > 的回复吧?发布答案...找到了。

标签: django angularjs forms validation django-forms


【解决方案1】:

它是 ng-disabled,而不是 ng-disable。

按钮应如下所示:

<button class="submit" ng-disabled="example_form_name.$invalid">Submit</button>

【讨论】:

  • 这没有提供问题的答案。要批评或要求作者澄清,请在他们的帖子下方留下评论。 - From Review
  • @4dgaurav 问题的答案就在那里……存在语法错误。更新了答案以包含确切的代码。
猜你喜欢
  • 2017-11-25
  • 1970-01-01
  • 1970-01-01
  • 2018-12-30
  • 2016-12-30
  • 1970-01-01
  • 2016-10-30
  • 2015-04-18
相关资源
最近更新 更多