javascript - 如何使用 AngularJs 验证 Django 表单?

标签 javascript angularjs django django-forms

我的表格非常简单。可以将其视为具有 1 个字段和一个提交按钮。我想要的验证也很简单,如果 1 字段为空,则提交按钮将被禁用。如果没有,提交按钮将起作用。我正在尝试使用 AngularJs 动态地执行此操作,但不太确定我缺少什么。

虽然我使用的是 Django 表单,但我的表单在 Html 中呈现如下:

<div ng-app="myApp" ng-controller="searchController">
    <form method='POST' action='' class="form-with-blue-labels" name="searchForm">
        {% csrf_token %}
        <input class="textinput textInput form-control" id="id_professor_name" maxlength="255" name="professor_name" placeholder="Search for a professor" required="required" type="text">
        <input ng-disabled="disabled_bool" type="submit" class="btn btn-primary" value="Search" />
    </form>
</div>

我的 Angular 文件如下所示:

angular.module('myApp', [])

.config(function($interpolateProvider) {
  $interpolateProvider.startSymbol('{$');
  $interpolateProvider.endSymbol('$}');
})

.controller('searchController', [
  '$scope', function($scope) {
    var search_target = angular.element('#id_professor_name');
    if (search_target == ''){
      $scope.disabled_bool = true;
    }
  }
])

注意:由于我以非静态方式一起使用 Django 和 Angular,因此我将 Angular 标签更改为 {$$},而 Django 标签为 {{}}。

感谢任何帮助!

编辑

我现在已经尝试过了,但仍然无法让它工作:/

<div ng-app="myApp" ng-controller="searchController">
    <form method='POST' action='' class="form-with-blue-labels" name="searchForm">
        {% csrf_token %}
        <input ng-change="change()" class="textinput textInput form-control" id="id_professor_name" maxlength="255" name="professor_name" placeholder="Search for a professor" required="required" type="text">
        <input ng-disabled="disable_button" type="submit" class="btn btn-primary" value="Search" />
    </form>
</div>

使用此功能

angular.module('myApp', [])

.config(function($interpolateProvider) {
  $interpolateProvider.startSymbol('{$');
  $interpolateProvider.endSymbol('$}');
})

.controller('searchController', [
  '$scope', function($scope){
    $scope.change = function(){
      if (angular.element('#id_professor_name').length == 0) {
        $scope.disable_button = true;
      }
      else {
        $scope.disable_button = false;
      }
    };
  }
])

最佳答案

按照建议here ,您需要使用 ng-disabled="searchForm.$invalid" 因为您已经将 name 设置为必填。

关于javascript - 如何使用 AngularJs 验证 Django 表单?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35581655/

相关文章:

javascript - 使用 Javascript 迭代在 Html 中显示多个图像

javascript - "sort not a function"仅在谷歌浏览器中出现 angularjs 错误

django - 禁用在 django rest 框架中创建嵌套对象

angularjs - 服务的动态注入(inject)(从 Controller 内部)

django - 模板标签 'add' 需要 2 个参数,其中 1 个已提供

javascript - 'arrpf[i][1]' 为空或不是对象 IE 8

javascript - Android 中的 HTML5 视频自动播放

javascript - 如何替换 js 堆栈跟踪以包含 "line"和 "position"文本?

django - TemplateSyntaxError at/allVms/无效 block 标记 : 'static'

python - 如何检查 Django 中的字段/属性是否为空?