无法读取未定义的属性“长度”-JavaScript

时间:2018-08-27 03:06:24

标签: javascript html angularjs

我想验证字段。如果用户未在该字段中输入任何内容并单击“提交”按钮,则无法对其进行验证。

Demo

请参阅以下示例:

    $scope.validateFields = function(){
            alert("Comments " + $scope.comments); //When fields are blank and click on submit, it shows undefined
              if($scope.comments === 'undefined'){
                 alert("comments are blank");//not printed
                 $scope.comments = 'undefined';
            }
            if( $scope.comments.length == 0){
              alert("comments length is zero"); //not printed
              $scope.comments = 'undefined';
            }

在上面的示例代码中,当单击提交按钮而不在注释字段中输入任何内容时,它没有输入if条件。我想在评论字段为空并单击“提交”按钮时分配$scope.comments='undefined'

3 个答案:

答案 0 :(得分:0)

使用以下代码。您可以在加载控制器时初始化$ scope变量。

app.controller('myCtrl',function($scope,$http){

      $scope.validateFields = function(){
          if($scope.comments){
             alert("comments are blank");
        }
        if( $scope.comments.length == 0){
          alert("comments length is zero");
        }
//      alert("validate"+ $scope.comments.length); 
      } 

      function init() {
        $scope.comments = '';
      }

      init();


    });

选中plunkr

答案 1 :(得分:0)

第一个问题是您要检查$ scope.comments是否与未定义的字符串匹配,而不是检查当前是否在给定范围内定义了它。

if($scope.comments === undefined) {
    alert("comments are blank");//not printed
    $scope.comments = '';
}

注意,我只是删除了undefined周围的引号来实现此目的。您甚至可以为此使用速记来检查该值是否为false。您可以在线找到虚假值的完整列表,但其中有两个是空字符串或未定义。

if(!$scope.comments) {
    alert("comments are blank");//not printed
    $scope.comments = '';
}

接下来,您只需使用如下注释初始化$ scope即可完全避免这种情况。

var app=angular.module("myApp",[]);
app.controller('myCtrl', function($scope,$http) {
    $scope.comments = '';

    $scope.validateFields = function() {
        alert("Comments " + $scope.comments);
        if(!$scope.comments){
            alert("comments are blank");
        }
        else {
            alert("comments exist");
        }
    }
});

答案 2 :(得分:0)

检查空值的最佳方法是

if ( testVar !== null )
{
    // do action here
}

对于未定义

if ( testVar !== undefined )
{
    // do action here
}

您可以分配一个未定义的变量。

testVar = undefined;

请参阅falsey values in javascript

相关问题