/* * jQuery Mobile Framework : "textinput" plugin for text inputs, textareas * Copyright (c) jQuery Project * Dual licensed under the MIT (MIT-LICENSE.txt) and GPL (GPL-LICENSE.txt) licenses. * Note: Code is in draft form and is subject to change */ (function($, undefined ) { $.widget( "mobile.textinput", $.mobile.widget, { options: { theme: null }, _create: function(){ var input = this.element, o = this.options, theme = o.theme, themeclass; if ( !theme ) { var themedParent = this.element.closest("[class*='ui-bar-'],[class*='ui-body-']"); theme = themedParent.length ? /ui-(bar|body)-([a-z])/.exec( themedParent.attr("class") )[2] : "c"; } themeclass = " ui-body-" + theme; $('label[for='+input.attr('id')+']').addClass('ui-input-text'); input.addClass('ui-input-text ui-body-'+ o.theme); var focusedEl = input; //"search" input widget if( input.is('[type="search"],[data-type="search"]') ){ focusedEl = input.wrap('
').parent(); var clearbtn = $('clear text') .click(function(){ input.val('').focus(); input.trigger('change'); clearbtn.addClass('ui-input-clear-hidden'); return false; }) .appendTo(focusedEl) .buttonMarkup({icon: 'delete', iconpos: 'notext', corners:true, shadow:true}); function toggleClear(){ if(input.val() == ''){ clearbtn.addClass('ui-input-clear-hidden'); } else{ clearbtn.removeClass('ui-input-clear-hidden'); } } toggleClear(); input.keyup(toggleClear); } else{ input.addClass('ui-corner-all ui-shadow-inset' + themeclass); } input .focus(function(){ focusedEl.addClass('ui-focus'); }) .blur(function(){ focusedEl.removeClass('ui-focus'); }); //autogrow if ( input.is('textarea') ) { var extraLineHeight = 15, keyupTimeoutBuffer = 100, keyup = function() { var scrollHeight = input[0].scrollHeight, clientHeight = input[0].clientHeight; if ( clientHeight < scrollHeight ) { input.css({ height: (scrollHeight + extraLineHeight) }); } }, keyupTimeout; input.keyup(function() { clearTimeout( keyupTimeout ); keyupTimeout = setTimeout( keyup, keyupTimeoutBuffer ); }); } }, disable: function(){ ( this.element.attr("disabled",true).is('[type="search"],[data-type="search"]') ? this.element.parent() : this.element ).addClass("ui-disabled"); }, enable: function(){ ( this.element.attr("disabled", false).is('[type="search"],[data-type="search"]') ? this.element.parent() : this.element ).removeClass("ui-disabled"); } }); })( jQuery );