webshim
Version:
modular capability-based polyfill loading libary, which extends jQuery with HTML5 features in legacy browsers
60 lines (40 loc) • 2.15 kB
JavaScript
(function($){
module("datalist");
asyncTest("datalist", function(){
var options = $('#dlist').prop('options') || $('#dlist select').prop('options');
var options2 = $('#dlist option');
if(options && !options.length){
options = $('#dlist select').prop('options');
}
equals(options.length, options2.length, 'datalist options-attr has same length as option-element');
equals($('#dlist').prop('options').length, $('#dlist').jProp('options').length, 'prop("options").length equals jProp length');
strictEqual(options[0], options2[0], 'datalist first options-attr equals first option-element');
//todo: test prop list| test attr set/get list || removeAttr list
strictEqual($('#email').prop('list'), $('#dlist')[0], 'list property returns right datalist');
if(!webshims.support.datalist || $.webshims.cfg.forms.customDatalist){
$('#email').data('datalistWidget').showList();
var shadowListItems = $('div.datalist-polyfill li');
$.each(['yes aßäöâ', 'yes "2"', "yes '3'"], function(i, val){
equals($('span.option-value', shadowListItems[i]).text(), val, 'shadow datalistitems value equals options value');
});
strictEqual($('#email').attr('aria-haspopup'), 'true', 'input[list] has aria');
}
$('#email').attr('list', 'blasdsa');
strictEqual($('#email').prop('list'), null, 'list property is null, if id is not in document');
$('#email').attr('list', 'range');
strictEqual($('#email').prop('list'), null, 'list property is null, if element is not a datalist');
if(!webshims.support.datalist){
ok(!$('#email').attr('aria-haspopup'), 'aria was removed on input:not([list])');
}
$('#email').attr('list', 'dlist2');
strictEqual($('#email').prop('list'), $('#dlist2')[0], 'list property changed through content attribute');
if(!webshims.support.datalist || webshims.cfg.forms.customDatalist){
strictEqual($('#email').attr('aria-haspopup'), 'true', 'input[list] has aria');
$('#email').removeAttr('list');
ok(!$('#email').attr('aria-haspopup'), 'removed list attribute removes aria in shim');
}
$.webshims.ready('DOM forms forms-ext', function(){
start();
});
});
})(jQuery);