Skip to content

Commit 503c127

Browse files
committed
#13: finished
1 parent b7cc3d6 commit 503c127

File tree

2 files changed

+61
-23
lines changed

2 files changed

+61
-23
lines changed

example.html

Lines changed: 24 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,9 @@
99
<link rel="stylesheet" type="text/css" href="src/jquery.tagsinput-revisited.css" />
1010

1111
<script src="https://code.jquery.com/jquery-3.1.1.min.js" integrity="sha256-hVVnYaiADRTO2PzUGmuLJr8BLUSjGIZsDYGmIJLv2b8=" crossorigin="anonymous"></script>
12-
<script type="text/javascript" src="src/jquery.tagsinput-revisited.js"></script>
12+
<script src="http://code.jquery.com/ui/1.12.1/jquery-ui.min.js" integrity="sha256-VazP97ZCwtekAsvgPBSUwPFKdrwD3unUfSGVYrahUqU=" crossorigin="anonymous"></script>
13+
14+
<script src="src/jquery.tagsinput-revisited.js"></script>
1315

1416
<style>
1517
body, html {
@@ -33,8 +35,14 @@
3335
<label>Tags input with various validation:</label>
3436
<input id="form-tags-3" name="tags-3" type="text" value="">
3537

36-
<!-- TODO: autocomplete -->
37-
<!-- TODO: different delimiter -->
38+
<label>Tags input with autocomplete:</label>
39+
<input id="form-tags-4" name="tags-4" type="text" value="">
40+
41+
<label>Tags input with semicolon delimiter:</label>
42+
<input id="form-tags-5" name="tags-4" type="text" value="foo;bar">
43+
44+
<label>Tags input with array of delimiters (comma and semicolon):</label>
45+
<input id="form-tags-6" name="tags-4" type="text" value="foo;bar">
3846
</form>
3947

4048
<script type="text/javascript">
@@ -54,11 +62,24 @@
5462
});
5563

5664
$('#form-tags-3').tagsInput({
65+
'unique': true,
5766
'minChars': 2,
5867
'maxChars': 10,
5968
'limit': 5,
6069
'validationPattern': new RegExp('^[a-zA-Z]+$')
6170
});
71+
72+
$('#form-tags-4').tagsInput({
73+
'autocomplete_url': 'test/fake_json_endpoint.html'
74+
});
75+
76+
$('#form-tags-5').tagsInput({
77+
'delimiter': ';'
78+
});
79+
80+
$('#form-tags-6').tagsInput({
81+
'delimiter': [',', ';']
82+
});
6283
});
6384
</script>
6485
</body>

src/jquery.tagsinput-revisited.js

Lines changed: 37 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020
this.each(function() {
2121
var id = $(this).attr('id');
2222

23-
var tagslist = $(this).val().split(delimiter[id]);
23+
var tagslist = $(this).val().split(_getDelimiter(delimiter[id]));
2424
if (tagslist[0] === '') tagslist = [];
2525

2626
value = jQuery.trim(value);
@@ -69,14 +69,14 @@
6969
this.each(function() {
7070
var id = $(this).attr('id');
7171

72-
var old = $(this).val().split(delimiter[id]);
72+
var old = $(this).val().split(_getDelimiter(delimiter[id]));
7373

7474
$('#' + id + '_tagsinput .tag').remove();
7575

7676
var str = '';
7777
for (i = 0; i < old.length; ++i) {
7878
if (old[i] != value) {
79-
str = str + delimiter[id] + old[i];
79+
str = str + _getDelimiter(delimiter[id]) + old[i];
8080
}
8181
}
8282

@@ -93,7 +93,7 @@
9393

9494
$.fn.tagExist = function(val) {
9595
var id = $(this).attr('id');
96-
var tagslist = $(this).val().split(delimiter[id]);
96+
var tagslist = $(this).val().split(_getDelimiter(delimiter[id]));
9797
return (jQuery.inArray(val, tagslist) >= 0);
9898
};
9999

@@ -131,7 +131,7 @@
131131
if (settings.hide) $(this).hide();
132132

133133
var id = $(this).attr('id');
134-
if (!id || delimiter[$(this).attr('id')]) {
134+
if (!id || _getDelimiter(delimiter[$(this).attr('id')])) {
135135
id = $(this).attr('id', 'tags' + new Date().getTime() + (uniqueIdCounter++)).attr('id');
136136
}
137137

@@ -178,6 +178,10 @@
178178
$(this).addClass('focus');
179179
});
180180

181+
$(data.fake_input).on('focus', data, function(event) {
182+
$(data.holder).addClass('focus');
183+
});
184+
181185
$(data.fake_input).on('blur', data, function(event) {
182186
$(data.holder).removeClass('focus');
183187
});
@@ -260,7 +264,7 @@
260264
value = value.replace(/\n/g, '');
261265
value = value.replace(/\s/g, '');
262266

263-
var tags = _splitIntoTags(event, value);
267+
var tags = _splitIntoTags(event.data.delimiter, value);
264268

265269
if (tags.length > 0) {
266270
for (var i = 0; i < tags.length; ++i) {
@@ -304,14 +308,14 @@
304308

305309
$.fn.tagsInput.updateTagsField = function(obj, tagslist) {
306310
var id = $(obj).attr('id');
307-
$(obj).val(tagslist.join(delimiter[id]));
311+
$(obj).val(tagslist.join(_getDelimiter(delimiter[id])));
308312
};
309313

310314
$.fn.tagsInput.importTags = function(obj, val) {
311315
$(obj).val('');
312316

313317
var id = $(obj).attr('id');
314-
var tags = val.split(delimiter[id]);
318+
var tags = _splitIntoTags(delimiter[id], val);
315319

316320
for (i = 0; i < tags.length; ++i) {
317321
$(obj).addTag(tags[i], {
@@ -330,6 +334,16 @@
330334
}
331335
};
332336

337+
var _getDelimiter = function(delimiter) {
338+
if (typeof delimiter === 'undefined') {
339+
return delimiter;
340+
} else if (typeof delimiter === 'string') {
341+
return delimiter;
342+
} else {
343+
return delimiter[0];
344+
}
345+
};
346+
333347
var _validateTag = function(value, options, tagslist) {
334348
var result = true;
335349

@@ -364,29 +378,32 @@
364378
return found;
365379
};
366380

367-
var _splitIntoTags = function(event, value) {
381+
var _splitIntoTags = function(delimiter, value) {
368382
if (value === '') return [];
369383

370-
var tags;
371-
if (typeof event.data.delimiter === 'string') {
372-
tags = value.split(event.data.delimiter);
384+
if (typeof delimiter === 'string') {
385+
var tags = value.split(delimiter);
373386

374387
if (tags.length > 1) {
375388
return tags;
376389
} else {
377390
return [];
378391
}
379392
} else {
380-
$.each(event.data.delimiter, function(index, delimiter) {
381-
tags = value.split(delimiter);
382-
if (tags.length > 1) {
383-
return false;
384-
} else {
385-
tags = [];
386-
}
393+
var tmpDelimiter = '∞';
394+
var text = value;
395+
396+
$.each(delimiter, function(index, _delimiter) {
397+
text = text.split(_delimiter).join(tmpDelimiter);
387398
});
388399

389-
return tags;
400+
var tags = text.split(tmpDelimiter);
401+
402+
if (tags.length > 1) {
403+
return tags;
404+
} else {
405+
return [];
406+
}
390407
}
391408

392409
return [];

0 commit comments

Comments
 (0)