thread_create.js
42 lines
| 1.2 KiB
| application/javascript
|
JavascriptLexer
neko259
|
r1115 | var MIN_INPUT_LENGTH = 2; | |
var URL_TAGS = '/api/tags'; | |||
var TAG_DELIMITER = ' '; | |||
function split( val ) { | |||
return val.split(TAG_DELIMITER); | |||
} | |||
function extractLast( term ) { | |||
return split( term ).pop(); | |||
} | |||
$( document ).ready(function() { | |||
$('#id_tags').autocomplete({ | |||
source: function( request, response ) { | |||
$.getJSON(URL_TAGS, { | |||
term: extractLast( request.term ) | |||
}, response); | |||
}, | |||
search: function() { | |||
// custom minLength | |||
var term = extractLast( this.value ); | |||
if (term.length < MIN_INPUT_LENGTH) { | |||
return false; | |||
} | |||
}, | |||
focus: function() { | |||
// prevent value inserted on focus | |||
return false; | |||
}, | |||
select: function( event, ui ) { | |||
var terms = split( this.value ); | |||
// remove the current input | |||
terms.pop(); | |||
// add the selected item | |||
terms.push( ui.item.value ); | |||
// add placeholder to get the comma-and-space at the end | |||
terms.push(""); | |||
this.value = terms.join(TAG_DELIMITER); | |||
return false; | |||
} | |||
}); | |||
}); |