AngularJS - Обязательное поле ввода перед запуском функции нажатием ng

0

Мне нужно убедиться, что пользователи помещают сообщение в поле textarea перед отправкой формы с помощью ng-click.

Вот функция, которая будет запускаться при нажатии ng-click:

$scope.reject = function() {
  $http.post( 'http://server.com/api/reject/' + carID, { Message: Message } ).
  success(function(data) {
    $scope.output = data;
  })
}

Вот мой HTML:

<div id="reject" class="animated">
  <h3>WARNING</h3>
  <p>Your are about to <strong><u>REJECT</u></strong> this CAR. Are you sure this is the action that you want to take?</p>
  <form name="reject">
    <textarea placeholder="Message" ng-model="Message" ng-required="true"></textarea>
    <button ng-click="reject.$valid && reject()">Reject</button>
  </form>
</div>

Мой код HTML ng-click, полученный из этого сообщения SO:

<form name="myform">
  <input type="text" ng-model='name' ng-required="true" />
  <button ng-click="myform.$valid && preview()">Preview</button>
  <button ng-click="myform.$valid && update()">Update</button>
</form>

Но почему-то это не работает для меня. Если я удаляю forward.$valid && и просто имею его как ng-click="reject() он работает нормально, хотя я все еще могу запустить его, не вставляя сообщение. Мне нужна текстовая область, которая потребуется. Поэтому мне нужно проверить прежде чем функция запустится. Отрывок, который я получил от другого сообщения, должен работать, но я не знаю, почему это не так.

EDIT - вот скрипка: Моя скрипка

Теперь окно сообщения принадлежит мне, а другое - ниже, чем кто-то другой, работающий на скрипке. Я не понимаю, почему мой не работает.

Может кто-нибудь сказать мне, что я делаю неправильно?

  • 0
    Разве reject.$valid будет ложным, потому что форма недействительна, если <textarea> не заполнено. Это будет неверно, потому что это ng-required . Следовательно, функция не будет работать.
  • 1
    Не могли бы вы воспроизвести проблему в plunkr / fiddle?
Показать ещё 1 комментарий
Теги:
validation

2 ответа

2
Лучший ответ

Я запустил console.info в вашу рабочую функцию предварительного просмотра и обнаружил, что ваше значение отклонения в области $ регистрируется как конструктор. Я могу только догадываться, что вы нашли ключевое слово. Я изменил имя функции на reject2 и появился как функция и запускает запрошенное предупреждение. Вот рабочая скрипка

$scope.reject2 = function() {
    alert("hi");
  }
ng-click="reject.$valid && reject2()

Обновить

Извините, что я поделился вашей скриптовой ссылкой в первый раз. Он обновляется сейчас.

  • 1
    Я работал, я не понимал, что имя формы и имя функции должны отличаться. Спасибо за помощь
1

Вам нужно изменить reject на что-то еще в <form> и ng-click и в другом месте. Это ключевое слово protected.

  • 0
    Это совсем не так. jsfiddle.net/r8d1uq0L/225 изменил его в этой скрипке у него все равно не работает.
  • 2
    @ agon024 Не называйте форму и функцию одним и тем же. Это основная проблема. Вот доказательство.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню