2013-08-08 35 views
12

Tôi đang sử dụng thành phần UI Bootstrap của typeahead và tôi muốn buộc lựa chọn để xác thực biểu mẫu của tôi. Có thể cấu hình nó để đặt đầu vào không hợp lệ khi 'typeahead-editable' được đặt thành false và người dùng nhập giá trị "xấu" hoặc tôi nên viết chỉ thị cho điều này (nhưng làm cách nào?)?Đặt đầu vào không hợp lệ khi typeahead-editable là false

Cảm ơn

CẬP NHẬT 2013/08/09 09:54: Bạn nghĩ gì về giải pháp sau đây:

 
var formValidatorsModule = angular.module('app.validator.formValidator', []); 

formValidatorsModule.directive('typeaheadForceSelection', function() { 
    return { 
     require : 'ngModel', 
     link : function(scope, elm, attrs, ctrl) { 
      ctrl.$parsers.push(function(viewValue) { 
       if (viewValue == undefined) { 
        ctrl.$setValidity('typeaheadForceSelection', false); 
       } else { 
        ctrl.$setValidity('typeaheadForceSelection', true); 
       } 
       return viewValue; 
      }); 
     } 
    }; 
}); 
+0

Lỗi này đã được sửa vào năm 2016, lol ... xem plunker: http://plnkr.co/edit/NtGXL7uPLYKCHESnZyxs?p=preview –

Trả lời

17

Các typeahead chỉ thị từ http://angular-ui.github.io/bootstrap/ đã hỗ trợ để hạn chế đầu vào cho các trận đấu (nói cách khác, mọi người có thể liên kết để chỉ mô hình hóa các giá trị có sẵn dưới dạng kết quả phù hợp trong cửa sổ bật lên typeahead). Bạn có thể làm điều này bằng cách chỉ cần đặt thuộc tính typeahead-editable='false'.

Xin lưu ý rằng việc đặt thuộc tính này thành false sẽ không ngăn mọi người nhập các giá trị không hợp lệ. Nó sẽ chỉ đảm bảo rằng một đầu vào tương ứng được đánh dấu là không hợp lệ và một giá trị được cung cấp không bị ràng buộc với mô hình.

+0

Tôi biết rằng có thể chỉnh sửa được đặt thành false cho phép người dùng nhập bất kỳ giá trị nào. Nó chỉ không thiết lập mô hình. Điều tôi thấy lạ là trường nhập không "không hợp lệ" khi người dùng nhập giá trị không thể chọn. : [Ví dụ] (http://plnkr.co/edit/KbLOIRKHK5PdEIPvBCFV?p=preview). Hoặc tôi không hiểu điều gì đó ... –

+0

Tôi cập nhật "giải pháp" –

+0

@JulienMeyer tôi thấy - bạn cũng muốn đặt cờ hiệu lực cho phù hợp, đúng không? Điều này nghe có vẻ hợp lý, cảm thấy tự do để mở vấn đề này trong https://github.com/angular-ui/bootstrap/issues?state=open –