selectric
Version:
Fast, simple and light jQuery plugin to customize HTML selects
2 lines • 1.29 kB
JavaScript
/*! Selectric AddNew ϟ v0.2.0 (2017-08-22) - git.io/tjl9sQ - Copyright (c) 2017 David Shen (git.io/mhQmLQ) - MIT License */
!function(e){"function"==typeof define&&define.amd?define(["jquery"],e):"object"==typeof module&&module.exports?module.exports=function(t,r){return void 0===r&&(r="undefined"!=typeof window?require("jquery"):require("jquery")(t)),e(r),r}:e(jQuery)}(function(e){"use strict";e.fn.selectric||e.error("Selectric not initialized"),e.fn.selectricAddNew=function(t){return this.each(function(){var r=e(this),n=r.data("selectric"),c=e.extend({createNewAutoSelect:!0,createNewMarkup:'<input type="text" /><button>Create</button>',allowCreateNew:!0,createNewCallback:e.noop,createNewError:function(){e.error("Title required.")}},t),o=n.$element,i=n.elements.itemsScroll,l=e("<div/>",{class:"create-new",html:c.createNewMarkup});if(c.allowCreateNew){i.prepend(l);var a=l.find("input[type=text]"),u=l.find("button");a.add(u).on("click",function(e){e.preventDefault(),e.stopPropagation()}),u.on("click",function(){if(a.val()){var t=a.val();o.append(e("<option>",{value:t,text:t})),c.createNewAutoSelect&&o.prop("selectedIndex",o.children().length-1),n.refresh(),n.open(),c.createNewCallback.call(n.element,t),a.add(u).off("click")}else c.createNewError.call(n.element)})}})}});