2015-04-27 15 views
7

Tôi muốn thông báo lỗi xuất hiện nếu người dùng nhấp gửi không có nội dung và tôi muốn nút gửi bị tắt. Tôi có thể nhận được một trong hai làm việc, nhưng không phải cả hai cùng một lúc.Angularjs - cách nhận thông báo lỗi ng-message cần hiển thị và vô hiệu hóa nút nhập cùng một lúc

Mã bên dưới sẽ hiển thị thông báo nhưng cho phép mục cần làm trống.

<form name="todoForm" novalidate > 


    <div ng-messages="todoForm.new.$error" ng-if="todoForm.$submitted"><div ng-message="required">Add Your Item Below...</div></div><!--message appears until valid input is entered--> 

    <input type="text" name="new" placeholder="start typing..." autofocus data-ng-model="newTodo" required=""/> 

    <button input type="submit" ng-click="addTodo()" >Add To List</button><!--disables form if form not valid--> 

</form> 

Phiên bản này sẽ vô hiệu hóa nút gửi nhưng không đưa lên thông điệp

<form name="todoForm" novalidate > 


    <div ng-messages="todoForm.new.$error" ng-if="todoForm.$submitted"><div ng-message="required">Add Your Item Below...</div></div><!--message appears until valid input is entered--> 

    <input type="text" name="new" placeholder="start typing..." autofocus data-ng-model="newTodo" required=""/> 

    <button input type="submit" ng-click="addTodo()" data-ng-disabled="todoForm.$invalid" >Add To List</button> 
</form> 

Tôi đoán này là bởi vì các tin nhắn không thể được hiển thị khi nút đầu vào bị vô hiệu hóa vì không có gì đã được đã gửi?

Tôi đã thử sử dụng $ bị vô hiệu hóa và $ không hợp lệ thay thế nhưng chúng chưa hoạt động.

+0

trừ khi tôi đang thiếu cái gì, những gì tôi nhận được từ này là 'ng if-= "todoForm $ nộp."' Là mâu thuẫn với 'ng- messages = "todoForm.new. $ error" '. tức là với 'ng-if' xuất hiện trên cùng một div, tôi không thấy văn bản' ng-message = "bắt buộc" 'hiển thị. Khi tôi xóa 'ng-if', thông báo bắt buộc hiển thị: http://plnkr.co/edit/8pE3jmBNYRpPSvyJA0ys?p=preview –

+0

ng-if =" todoForm. $ Submitted "đang xung đột với dữ liệu-ng-disabled = "todo.Form. $ invalid" theo như tôi thấy. Ví dụ của bạn không phải là sản xuất ng-tin nhắn, không phải là một tin nhắn html5? – vtechmonkey

Trả lời

1

Tôi đã loại bỏ xung đột ng-if trên phần tử thông điệp ng. Đây là một plunk làm việc hiển thị mã cố định.

http://plnkr.co/edit/gL0GoFT47mSeydKReLuD

giả định của tôi là bạn quên tiêm module 'ngMessages' như một sự phụ thuộc bên ngoài.

Bạn có thể sửa mã của bạn như thế này:

var app = angular.module('plunker', ['ngMessages']); 
+0

Cảm ơn, nhưng tôi không muốn thông báo xuất hiện khi trang được tải, chỉ khi người dùng truy cập mà không cần nhập bất kỳ thông tin nào. Tôi biết tôi có ngMessage làm việc, như tôi có thể làm cho nó hoạt động theo cách này, – vtechmonkey

+0

Bạn chỉ có thể sử dụng $ bẩn để làm điều đó, tôi đã cập nhật các plunk để phản ánh sự thay đổi. –

+0

không hoạt động nếu người dùng chưa nhập bất kỳ thứ gì và chỉ cần nhấn gửi. – vtechmonkey

Các vấn đề liên quan