Commits

Mark Lavin committed a9a8016

Add support for allow_new parameter.

Comments (0)

Files changed (2)

selectable/forms/widgets.py

 from django import forms
+from django.conf import settings
 
 
 __all__ = (
 
     def __init__(self, lookup_class, *args, **kwargs):
         self.lookup_class = lookup_class
+        self.allow_new = kwargs.pop('allow_new', False)
         super(AutoCompleteWidget, self).__init__(*args, **kwargs)
         # New attrs
         url = lookup_class.url()
-        self.attrs['data-selectable-url'] = url
+        self.attrs[u'data-selectable-url'] = url
+        self.attrs[u'data-selectable-allow-new'] = str(self.allow_new).lower()
 

selectable/static/js/jquery.dj.selectable.js

 $(document).ready(function() {
     $(":input[data-selectable-url]").each(function(i, elem) {
         var url = $(elem).attr('data-selectable-url');
-        $(elem).autocomplete({source: url});
+        $(elem).autocomplete({
+            source: url,
+            change: function(event, ui) {
+                var allowAttr = $(this).attr('data-selectable-allow-new');
+                var allowNew = false;
+                if (typeof allowAttr !== 'undefined' && allowAttr === 'true') {
+                    allowNew = true;
+                }
+                if (!ui.item) {
+                    if (!allowNew) {
+                        $(this).val("");
+					    $(this).data("autocomplete").term = "";
+					    return false;
+                    }
+                }
+            }
+        });
     });
 });
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.