Skip to content

Commit 59f529a

Browse files
committed
#4: in progress
1 parent 30b1c7d commit 59f529a

File tree

3 files changed

+59
-7
lines changed

3 files changed

+59
-7
lines changed

dist/jquery.tagsinput-revisited.min.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

example.html

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@
3434
<input id="form-tags-3" name="tags-3" type="text" value="">
3535

3636
<!-- TODO: autocomplete -->
37+
<!-- TODO: different delimiter -->
3738
</form>
3839

3940
<script type="text/javascript">

src/jquery.tagsinput-revisited.js

Lines changed: 57 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,6 @@
33
* Copyright (c) Krzysztof Rusnarczyk
44
* Licensed under the MIT license */
55

6-
/*
7-
* TODO: delimiter fixes
8-
*/
9-
106
(function($) {
117
var delimiter = [];
128
var callbacks = [];
@@ -232,7 +228,9 @@
232228
});
233229
}
234230

235-
// If a user types a delimiter or enter create a new tag
231+
// TODO: keypress and input cannot interfere with each other (validation perspective also)
232+
233+
// If a user types a delimiter create a new tag
236234
$(data.fake_input).on('keypress', data, function(event) {
237235
if (_checkDelimiter(event)) {
238236
event.preventDefault();
@@ -250,6 +248,31 @@
250248
}
251249
});
252250

251+
// If a user pastes the text check if it shouldn't be splitted into tags
252+
$(data.fake_input).bind('input', data, function(event) {
253+
var value = $(event.data.fake_input).val();
254+
255+
value = value.replace(/\n/g, '');
256+
value = value.replace(/\s/g, '');
257+
258+
var tags = _splitIntoTags(event, value);
259+
260+
if (tags.length > 0) {
261+
for (var i = 0; i < tags.length; ++i) {
262+
$(event.data.real_input).addTag(tags[i], {
263+
focus: true,
264+
unique: settings.unique,
265+
minChars: settings.minChars,
266+
maxChars: settings.maxChars,
267+
limit: settings.limit,
268+
validationPattern: settings.validationPattern
269+
});
270+
}
271+
272+
return false;
273+
}
274+
});
275+
253276
// Deletes last tag on backspace
254277
data.removeWithBackspace && $(data.fake_input).on('keydown', function(event) {
255278
if (event.keyCode == 8 && $(this).val() === '') {
@@ -322,7 +345,7 @@
322345
}
323346

324347
if (typeof event.data.delimiter === 'string') {
325-
if (event.which == event.data.delimiter.charCodeAt(0)) {
348+
if (event.which === event.data.delimiter.charCodeAt(0)) {
326349
found = true;
327350
}
328351
} else {
@@ -335,4 +358,32 @@
335358

336359
return found;
337360
};
361+
362+
var _splitIntoTags = function(event, value) {
363+
if (value === '') return [];
364+
365+
var tags;
366+
if (typeof event.data.delimiter === 'string') {
367+
tags = value.split(event.data.delimiter);
368+
369+
if (tags.length > 1) {
370+
return tags;
371+
} else {
372+
return [];
373+
}
374+
} else {
375+
$.each(event.data.delimiter, function(index, delimiter) {
376+
tags = value.split(delimiter);
377+
if (tags.length > 1) {
378+
return false;
379+
} else {
380+
tags = [];
381+
}
382+
});
383+
384+
return tags;
385+
}
386+
387+
return [];
388+
};
338389
})(jQuery);

0 commit comments

Comments
 (0)