/* * jQuery Mobile Framework : "textinput" plugin for text inputs, textareas * Copyright (c) jQuery Project * Dual licensed under the MIT or GPL Version 2 licenses. * http://jquery.org/license */ (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'],:jqmData(type='search')" ) ){ focusedEl = input.wrap('
').parent(); var clearbtn = $('clear text') .tap(function( e ){ input.val('').focus(); input.trigger('change'); clearbtn.addClass('ui-input-clear-hidden'); e.preventDefault(); }) .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); input.focus(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'],:jqmData(type='search')" ) ? this.element.parent() : this.element ).addClass("ui-disabled"); }, enable: function(){ ( this.element.attr("disabled", false).is( "[type='search'],:jqmData(type='search')" ) ? this.element.parent() : this.element ).removeClass("ui-disabled"); } }); })( jQuery );