" +
diff --git a/js/jquery.mobile.forms.slider.js b/js/jquery.mobile.forms.slider.js
index 65b34c45..93f01bf6 100644
--- a/js/jquery.mobile.forms.slider.js
+++ b/js/jquery.mobile.forms.slider.js
@@ -8,6 +8,9 @@
$.fn.slider = function(options){
return this.each(function(){
var control = $(this),
+ o = $.extend({
+ theme: control.data("theme") || 'c'
+ },options),
cType = control[0].nodeName.toLowerCase(),
selectClass = (cType == 'select') ? 'ui-slider-switch' : '',
controlID = control.attr('id'),
@@ -18,10 +21,10 @@ $.fn.slider = function(options){
max = (cType == 'input') ? parseFloat(control.attr('max')) : control.find('option').length-1,
percent = val / (max - min) * 100,
snappedPercent = percent,
- slider = $('
'),
+ slider = $('
'),
handle = $('
')
.appendTo(slider)
- .buttonMarkup({corners: true, theme: 'c', shadow: true})
+ .buttonMarkup({corners: true, theme: o.theme, shadow: true})
.attr({
'role': 'slider',
'aria-valuemin': min,
@@ -40,7 +43,7 @@ $.fn.slider = function(options){
control.find('option').each(function(i){
var side = (i==0) ?'b':'a',
corners = (i==0) ? 'right' :'left',
- theme = (i==0) ?'c':'b';
+ theme = (i==0) ? o.theme :'b';
$('
').prependTo(slider);
$('
'+$(this).text()+'').prependTo(handle);
});
diff --git a/js/jquery.mobile.forms.textinput.js b/js/jquery.mobile.forms.textinput.js
index 4a976f2e..b91ccced 100644
--- a/js/jquery.mobile.forms.textinput.js
+++ b/js/jquery.mobile.forms.textinput.js
@@ -10,13 +10,13 @@ jQuery.fn.customTextInput = function(options){
var input = $(this);
var o = $.extend({
- search: input.is('[type="search"],[data-type="search"]')
- //defaultTheme: "a"
+ search: input.is('[type="search"],[data-type="search"]'),
+ theme: input.data("theme") || "c"
}, options);
$('label[for='+input.attr('id')+']').addClass('ui-input-text');
- input.addClass('ui-input-text');
+ input.addClass('ui-input-text ui-shadow-inset ui-body-'+ o.theme);
var focusedEl = input;
@@ -46,7 +46,7 @@ jQuery.fn.customTextInput = function(options){
input.keyup(toggleClear);
}
else{
- input.addClass('ui-corner-all ui-body-c');
+ input.addClass('ui-corner-all');
}
input
diff --git a/js/jquery.mobile.listview.js b/js/jquery.mobile.listview.js
index ee52ad26..3735ba6c 100644
--- a/js/jquery.mobile.listview.js
+++ b/js/jquery.mobile.listview.js
@@ -25,7 +25,13 @@ $.widget( "mobile.listview", $.mobile.widget, {
//create listview markup
this.element
.addClass( "ui-listview" )
+ .attr( "role", "listbox" )
.find( "li" )
+ .attr("role","option")
+ .attr("tabindex","-1")
+ .focus(function(){
+ $(this).attr("tabindex","0");
+ })
.each(function() {
var $li = $( this ),
role = $li.data( "role" ),
@@ -58,8 +64,55 @@ $.widget( "mobile.listview", $.mobile.widget, {
else {
$li.addClass( "ui-li-static ui-btn-up-" + o.theme );
}
- });
-
+ })
+ .eq(0)
+ .attr("tabindex","0");
+
+
+ //keyboard events for menu items
+ this.element.keydown(function(event){
+ //switch logic based on which key was pressed
+ switch(event.keyCode){
+ //up or left arrow keys
+ case 38:
+ //if there's a previous option, focus it
+ if( $(event.target).closest('li').prev().length ){
+ $(event.target).blur().attr("tabindex","-1").closest('li').prev().find('a').eq(0).focus();
+ }
+ //prevent native scroll
+ return false;
+ break;
+ //down or right arrow keys
+ case 40:
+
+ //if there's a next option, focus it
+ if( $(event.target).closest('li').next().length ){
+ $(event.target).blur().attr("tabindex","-1").closest('li').next().find('a').eq(0).focus();
+ }
+ //prevent native scroll
+ return false;
+ break;
+ case 39:
+ if( $(event.target).closest('li').find('a.ui-li-link-alt').length ){
+ $(event.target).blur().closest('li').find('a.ui-li-link-alt').eq(0).focus();
+ }
+ return false;
+ break;
+ case 37:
+ if( $(event.target).closest('li').find('a.ui-link-inherit').length ){
+ $(event.target).blur().closest('li').find('a.ui-link-inherit').eq(0).focus();
+ }
+ return false;
+ break;
+ //if enter or space is pressed, trigger click
+ case 13:
+ case 32:
+ $(event.target).trigger('click'); //should trigger select
+ return false;
+ break;
+ }
+ });
+
if ( o.inset ) {
this.element
.addClass( "ui-listview-inset" )