/
githubmirror
/
materialize
Обзор
Документация
Войти
/
githubmirror
/
materialize
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
v0.95.0
js/forms.js
236 строк
7 KB
Alvin Wang
Resolved merge conflicts
14 янв 2015, 01:52
14 янв 2015, 01:52
6028cea
Код
Авторство
О чём код?
(function ($) { $(document).ready(function() { // Text based inputs var input_selector = 'input[type=text], input[type=password], input[type=email], input[type=tel], input[type=number], textarea'; // Add active if form auto complete $(document).on('change', input_selector, function () { if($(this).val().length !== 0) { $(this).siblings('label, i').addClass('active'); } }); // Add active if input element has been pre-populated on document ready $(document).ready(function() { $(input_selector).each(function(index, element) { if($(element).val().length > 0) { $(this).siblings('label, i').addClass('active'); } }); }); // HTML DOM FORM RESET handling $(document).on('reset', function(e) { if ($(e.target).is('form')) { $(this).find(input_selector).removeClass('valid').removeClass('invalid'); // Reset select $(this).find('select.initialized').each(function () { var reset_text = $(this).find('option[selected]').text(); $(this).prev('span.select-dropdown').html(reset_text); }); } }); // Add active when element has focus $(document).on('focus', input_selector, function () { $(this).siblings('label, i').addClass('active'); }); $(document).on('blur', input_selector, function () { if ($(this).val().length === 0) { $(this).siblings('label, i').removeClass('active'); if ($(this).hasClass('validate')) { $(this).removeClass('valid'); $(this).removeClass('invalid'); } } else { if ($(this).hasClass('validate')) { if ($(this).is(':valid')) { $(this).removeClass('invalid'); $(this).addClass('valid'); } else { $(this).removeClass('valid'); $(this).addClass('invalid'); } } } }); // Textarea Auto Resize if ($('.hiddendiv').length === 0) { var hiddenDiv = $('<div class="hiddendiv common"></div>'), content = null; $('body').append(hiddenDiv); } var hiddendiv = $('.hiddendiv'); var text_area_selector = '.materialize-textarea'; $('body').on('keyup keydown',text_area_selector , function () { // console.log($(this).val()); content = $(this).val(); content = content.replace(/\n/g, '<br>'); hiddenDiv.html(content + '<br>'); // console.log(hiddenDiv.html()); $(this).css('height', hiddenDiv.height()); }); // Range Input var range_type = 'input[type=range]'; var range_mousedown = false; $(range_type).each(function () { var thumb = $('<span class="thumb"><span class="value"></span></span>'); $(this).after(thumb); }); var range_wrapper = '.range-field'; $(document).on("mousedown", range_wrapper, function(e) { var thumb = $(this).children('.thumb'); if (thumb.length <= 0) { thumb = $('<span class="thumb"><span class="value"></span></span>'); $(this).append(thumb); } range_mousedown = true; $(this).addClass('active'); if (!thumb.hasClass('active')) { thumb.velocity({ height: "30px", width: "30px", top: "-20px", marginLeft: "-15px"}, { duration: 300, easing: 'easeOutExpo' }); } var left = e.pageX - $(this).offset().left; var width = $(this).outerWidth(); if (left < 0) { left = 0; } else if (left > width) { left = width; } thumb.addClass('active').css('left', left); thumb.find('.value').html($(this).children('input[type=range]').val()); }); $(document).on("mouseup", range_wrapper, function() { range_mousedown = false; $(this).removeClass('active'); }); $(document).on("mousemove", range_wrapper, function(e) { var thumb = $(this).children('.thumb'); if (range_mousedown) { if (!thumb.hasClass('active')) { thumb.velocity({ height: "30px", width: "30px", top: "-20px", marginLeft: "-15px"}, { duration: 300, easing: 'easeOutExpo' }); } var left = e.pageX - $(this).offset().left; var width = $(this).outerWidth(); if (left < 0) { left = 0; } else if (left > width) { left = width; } thumb.addClass('active').css('left', left); thumb.find('.value').html($(this).children('input[type=range]').val()); } }); $(document).on("mouseout", range_wrapper, function() { if (!range_mousedown) { var thumb = $(this).children('.thumb'); if (thumb.hasClass('active')) { thumb.velocity({ height: "0", width: "0", top: "10px", marginLeft: "-6px"}, { duration: 100 }); } thumb.removeClass('active'); } }); // Select Functionality // Select Plugin $.fn.material_select = function (callback) { $(this).each(function(){ $select = $(this); if ( $select.hasClass('browser-default') || $select.hasClass('initialized')) { return; // Continue to next (return false breaks out of entire loop) } var uniqueID = guid(); var wrapper = $('<div class="select-wrapper"></div>'); var options = $('<ul id="select-options-' + uniqueID+'" class="dropdown-content select-dropdown"></ul>'); var selectOptions = $select.children('option'); if ($select.find('option:selected') !== undefined) { var label = $select.find('option:selected'); } else { var label = options.first(); } // Create Dropdown structure selectOptions.each(function () { // Add disabled attr if disabled options.append($('<li class="' + (($(this).is(':disabled')) ? 'disabled' : '') + '"><span>' + $(this).html() + '</span></li>')); }); options.find('li').each(function (i) { var $curr_select = $select; $(this).click(function () { // Check if option element is disabled if (!$(this).hasClass('disabled')) { $curr_select.find('option').eq(i).prop('selected', true); // Trigger onchange() event $curr_select.trigger('change'); $curr_select.prev('span.select-dropdown').html($(this).text()); if (typeof callback !== 'undefined') callback(); } }); }); // Wrap Elements $select.wrap(wrapper); // Add Select Display Element var $newSelect = $('<span class="select-dropdown ' + (($select.is(':disabled')) ? 'disabled' : '') + '" data-activates="select-options-' + uniqueID +'">' + label.html() + '</span>'); $select.before($newSelect); $('body').append(options); // Check if section element is disabled if (!$select.is(':disabled')) { $newSelect.dropdown({"hover": false}); } $select.addClass('initialized'); }); } // Unique ID var guid = (function() { function s4() { return Math.floor((1 + Math.random()) * 0x10000) .toString(16) .substring(1); } return function() { return s4() + s4() + '-' + s4() + '-' + s4() + '-' + s4() + '-' + s4() + s4() + s4(); }; })(); }); }( jQuery ));