Thursday, May 16, 2013

Jquery Mobile - Customizing the search box

    Customizing the Jquery Mobile default styles is often required to match the design visuals provided by your designer and approved by your client. Such is the case with the Jquery Mobile search box as well. The designers often use customized icons for the default search box icons. In the example that follows, we will take a look at how this done and we will use custom icons for the search box in place of the default icons.



    As seen in the example above, in the CSS, we need to use the !important keyword to override the default styles of the Jquery Mobile class.

    Customizing the search box or any other element in Jquery mobile is pretty simple. Hope you have followed the post and followed how to customize the Jquery Mobile default styles for  the HTML5 search input box. Drop a comment in case you need to know more or need help with your Jquery Mobile application. I would be happy to help!

Jquery Mobile Form - Search input

    Input field of type search is newly introduced in HTML5 and is very well styled. The style is further enhanced when using the Jquery Mobile framework and we will see how this can be done in today's post. Jquery Mobile styles the search input type with capsule-corners and adds a 'x' icon to the right end, which clears the text in the search box.

    The seacrch input elements are available in 2 flavors/sizes - regular and mini. Adding a data attribute data-mini="true" to the input tag renders a smaller sized input element. Let's take a look at the code sample below to understand the working in a better way.



     In the code above, you will see 4 different implementations of the input search element. The first one is a regular input of type search with the label and the searchbox one below the other. The second implementation is exactly similar to the first implementation with the only difference of the added data attribute "data-mini="true"" which reduces the size (basically height) of the saerchbox.

    The third implementation gets the label and the saerchbox on the same line. This implementation is done using a div with data attribute data-role="fieldcontain" around the label and input tags. This div has to be within a form tag. Maintaining the HTML structure is very important when using JQuery Mobile framework.

    In the fourth implementation, we have used the HTML5 placeholder property and done away with the label completely. However, for the sake of accessibility, we have included the label tag with class="ui-hidden-accessible" so that the label is not displayed but is present in the HTML structure. This implementation is popularly used on mobile sites as this reduces the amount of scroll.

    To disable the input field just add the keyword "disabled" to the input tag and your input type would be disabled.


    For the sake of accessibility, jQuery Mobile requires that all form elements be paired with a meaningful label. To hide labels in a way that leaves them visible to assistive technologies — for example, when letting an element's placeholder attribute serve as a label — apply the helper class ui-hidden-accessible to the label itself. While the label will no longer be visible, it will be available to assisitive technologies such as screen readers.

    In the next post that follows, we will take a look at how we can customize the search box styling. This would include using custom icons for the the 'magnifying glass' and 'x' icon in the search box and reducing/removing the rounded corners property on the search box.

     Hope this post has been informative to you and helps you use the search input type effectively in your next Jquery Mobile based application. Drop a comment to let me know what you feel about this post as well as the earlier series on Jquery Mobile listview. Share the post if is has helped you, so that maximum developers benefit from this one. Stay tuned for the post on customizing the search box using Jquery Mobile.

Tuesday, April 30, 2013

Jquery Mobile Form - Text inputs

    In this post on "form text input's" styling and usage using Jquery Mobile we will cover various input types and textarea styling using JQM. We will also cover the various attributes that can be used with the input types. Text inputs and textareas are coded with standard HTML elements, then enhanced by Jquery Mobile to make them more attractive and useable on a mobile device.

    The text input elements are available in 2 flavors/sizes - regular and mini. Following is a standard HTML syntax for an input element.


    Adding a data attribute data-mini="true" to the input tag renders a smaller sized input element. Let's take a look at the code sample below to understand the working in a better way.

    Apart from the regular input type, to accept multi-line input, use the textarea element. The advantage of using textarea in Jquery Mobile is that, the framework auto grows the height of the textarea, avoiding the need for the content in the textarea to be scrolled internally. In the example below, you will see to implementations of textareas - one with label and textarea on 2 separate lines and the other with the label and textarea on the same line.



    In the code above, you will see 4 different implementations of the input element. The first one is a regular input of type text with the label and the textbox one below the other. The second implementation is exactly similar to the first implementation with the only difference of the added data attribute "data-mini="true"" which reduces the size (basically height) of the textbox.

    The third implementation gets the label and the textbox on the same line. This implementation is done using a div with data attribute data-role="fieldcontain" around the label and input tags. This div has to be within a form tag. Maintaining the HTML structure is very important when using JQuery Mobile framework.

    In the fourth implementation, we have used the HTML5 placeholder property and done away with the label completely. However, for the sake of accessibility, we have included the label tag with class="ui-hidden-accessible" so that the label is not displayed but is present in the HTML structure. This implementation is popularly used on mobile sites as this reduces the amount of scroll.

    To disable the input field just add the keyword "disabled" to the input tag and your input type would be disabled.

    A note on accessibility:
    For the sake of accessibility, jQuery Mobile requires that all form elements be paired with a meaningful label. To hide labels in a way that leaves them visible to assistive technologies — for example, when letting an element's placeholder attribute serve as a label — apply the helper class ui-hidden-accessible to the label itself. While the label will no longer be visible, it will be available to assisitive technologies such as screen readers.

    You can use the various input types supported in HTML5. The advantage of using the HTML5 input types is that keybords default to the particular input type are displayed by default. The following example demonstrates the various HTML5 input types that you can use. Try out the example on a mobile device and you will see for yourself the various keyboards that default the particular input type.



    The mobile browsers that do not support the new HTML5 input types will fall back to the default input type="text" and show the default alpha-numeric keyboard. Adding the images (screenshots) of default keyboards displayed for different input types on the Android and iOS devices, to this post would make the post really long and so I have included these images here.

    Hope this post has been informative to you and helps you use the various input types effectively in your next Jquery Mobile based application. Drop a comment to let me know what you feel about this post as well as the earlier series on Jquery Mobile listview. Share the post if is has helped you, so that maximum developers benefit from this one. Till next time, happy coding!

Default keyboards for HTML5 input types

    Following is the list of default keyboards that are displayed for the various HTML5 input types. These screenshots have been taken on the Android and iOs devices.

Input type="color"







Input type="date"






Input type="datetime"





Input type="datetime-local"






Input type="email"







Input type="month"







Input type="number"







Input type="number+pattern"




Input type="password"




Input type="tel"




Input type="time"




Input type="url"




Input type="week"





Friday, April 26, 2013

Jquery Mobile - Introduction to form elements

    Jquery Mobile framework provides a complete set of finger-friendly form elements that are based on native HTML form elements. In the posts that will follow, we will take a look at the various form elements and the various properties that we can apply to these form elements.


   We will be taking a look at all the form elements like input types, textareas, slider control, toggle switch, radio buttons, checkboxes and select menus. We will also be covering how to use the mini versions of each of these input elements, how to disable them, how to initialize them and how to use the refresh method on the form elements.

    Hope you all enjoy the series on form elements like you loved the series on Jquery Mobile listview. Do drop a comment to let me know what you would want from this series and I would be happy to include those points. Share the word! Happy coding!



Jquery Mobile Listview enhancements and customization

    In this post today, we will take a look at the various enhancements and customization that we can do to the standard listviews. All these enhancements or customization are questions asked by various people on the Jquery Mobile forum. I have tried to put together a solution to some of them.

    Let's take a look at a few of them. Some questions are really amazing like "When i have 3 nested listview structure and moved to 3rd nested, how to move back to second nested listview?" Now this is a really good question and a nice valid requirement too. When we had see an example on nested listviews you must have wondered how we would navigate to the previous levels from the current level. Well here is a solution that I had put together.

    Another really nice question was "Listview with collapsable listview inside". This is really a good example to try out. Take a look at the solution that was proposed and also taken from other jsfiddles. There is this another enhancement where we can "Add a count bubble to a collapsible listview header ". We had see an example on listviews with count bubbles. We can add the class "ui-li-count" to only list dividers or simple listview. We cannot add it to a collapsible list. Here is a solution wherein we can achieve it with the closest possible style.

    Some minor looking style changes like "Changing collapsible div color" can also be easily achieved with something as seen in this solution. On a number of occasions when we are deep into coding something really complex we tend to forget the most basic stuff and then end up facing issues like "Adding a missing icon to a listview". Well the solution to this was very obvious and simple. The link/anchor tag that is required to get an "arrow-r" icon on the listview was definitely missing. Here is a link to the details of the issue.

    Hope it has been a fun ride for you all so far. Hope you have enjoyed the series on listview and enjoying exploring the Jquery Mobile framework. Drop a line to appreciate, criticize, comment or ask a doubt and share if you have enjoyed the post. I would be happy to help!

Thursday, April 25, 2013

Jquery Mobile accordions - Collapsible listviews

    "How do I add a collapsible list to my Jquery Mobile application?" If this is the question that's bothering you, then JQM has a solution to this and a pretty simple one. You can style the listviews as collapsibles very easily and you can have individual collapsible lists or a set of collapsible lists (accordions). We will take a look at how we can achieve both of these.

    Let us begin with the individual collapsible listviews. You can achieve a collapsible by merely adding a div with data-attribute data-role="collapsible". This will style the div as a collapsible block with a default "plus" icon positioned to the left end of the list. To add a heading to the collapsible list add a heading tag (h1-h6) and you will have a left-aligned title for your collapsible header. After you have added the header, you can now have any content that you wish to include in the collapsible.

    Let's take a look at the example below to better understand the collapsible list implementation. We have 3 individual collapsible lists with different data-theme attributes. You can have a list open by default by including data-collapsed="false" attribute. By adding the data-content-theme attribute, you will get a border to the collapsible container.


    Now that we have created individual collapsible lists, we can club them together to create a collapsible set or an accordion as it is more commonly know. To do this add a div with data-role="collapsible-set" attribute around the collapsible divs and you will get an accordion. In the collapsible-set or the accordion, only one collapsible list would be open at a time. Refer to the following example to understand the implementation of a collapsible-set or an accordion.


    Hope you have followed how to create a collapsible list and a collapsible set. Do drop a comment in case you have liked this post or have some suggestions on the same. Let me know in case you have any problems and I would be happy to help! In the next post we will see some of the various issues that I came across on the Jquery Mobile official forum and their resolutions.