javascript - How do I prevent form submission in Angularjs if I am submitting the form using enter key? -


i have applied validation form (it has 2 fields) don't know how prevent submitting,current flow is: after pressing enter key student's name , marks added on localstorage , displayed on screen there unable prevent empty data submitting.

these js functions:

$scope.searchenter = function() {     if (event.which == 13 && $scope.student != "") {         $scope.addstudent();     } }; $scope.addstudent = function() {     if ($scope.marks > 65) {         var pass = true;     } else {         pass = false;     }     $scope.students.push({ 'studentname': $scope.student, 'marks': parseint($scope.marks), 'pass': pass });     $scope.student = '';     $scope.marks = '';     localstorage['studentslist'] = json.stringify($scope.students);  }; 

this html part:

 <div class="row">         <div class="col-xs-12">             <form class="form-horizontal" novalidate name="studentform" >                 <div class="form-group">                     <label class="col-sm-2 control-label" for="student_name">student's name</label>                     <div class="col-sm-5">                     <input ng-model="student" ng-keyup="searchenter()" type="text" class="form-control" id="student_name" ng-required="true" name="stdname">                         <div ng-show="studentform.stdname.$touched && studentform.stdname.$invalid">                             <small style="color:red; display:block;">enter valid name </small>                         </div>                     </div>                 </div>                  <div class="form-group">                     <label class="col-sm-2 control-label" for="student_marks">marks obtained</label>                     <div class="col-sm-5">                     <input ng-model="marks" ng-keyup="searchenter()" type="number" class="form-control" id="student_marks" ng-required="true">press enter insert student's data in table.</div>                 </div>             </form>         </div>     </div> 

supposing fields correctly validating, prevent submit use ngdisabled directive, below:

<button type="submit" ng-disabled="form.$invalid">submit</button> 

edit: since op provided full code able give correct answer, is:

change check to:

if (event.which == 13 && $scope.student && $scope.marks) { 

snippet working based on code:

(function() {    angular      .module('app', [])      .controller('mainctrl', mainctrl);      mainctrl.$inject = ['$scope'];        function mainctrl($scope) {      $scope.students = [];        $scope.searchenter = function() {        if (event.which == 13 && $scope.student && $scope.marks) {          $scope.addstudent();        }      };        $scope.addstudent = function() {        console.log('addstudent called');        $scope.students.push({          'studentname': $scope.student,          'marks': $scope.marks,          'pass': $scope.marks > 65        });        $scope.student = '';        $scope.marks = '';        localstorage['studentslist'] = json.stringify($scope.students);      };    }  })();
<!doctype html>  <html ng-app="app">    <head>    <script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.5.8/angular.min.js"></script>    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.6/css/bootstrap.min.css">  </head>    <body ng-controller="mainctrl">    <div class="row">      <div class="col-xs-12">        <form class="form-horizontal" novalidate name="studentform">          <div class="form-group">            <label class="col-sm-2 control-label" for="student_name">student's name</label>            <div class="col-sm-5">              <input ng-model="student" ng-keyup="searchenter()" type="text" class="form-control" id="student_name" ng-required="true" name="stdname">              <div ng-show="studentform.stdname.$touched && studentform.stdname.$invalid">                <small style="color:red; display:block;">enter valid name </small>              </div>            </div>          </div>            <div class="form-group">            <label class="col-sm-2 control-label" for="student_marks">marks obtained</label>            <div class="col-sm-5">              <input ng-model="marks" ng-keyup="searchenter()" type="number" class="form-control" id="student_marks" ng-required="true">press enter insert student's data in table.</div>          </div>        </form>      </div>    </div>  </body>    </html>

tips:

  1. the ngmodel $scope.marks number, don't need to parse, can have 'marks': $scope.marks.

  2. the check of pass can reduced to: 'pass': $scope.marks > 65


Comments

Popular posts from this blog

jOOQ update returning clause with Oracle -

java - Warning equals/hashCode on @Data annotation lombok with inheritance -

java - BasicPathUsageException: Cannot join to attribute of basic type -