Вы точно знаете как решить эту маленькую проблему (selectbox)
Привет всем. Подскажите, мне в скрипте нужно заменить
labelна заголовок уникальный для каждого selectbox'a. ![]() Мне не нужно, чтобы в заголовке selectbox'a был один из вариантов. Как это реализовать? Есть скрипт: блаблабла // HTML template for the dropdowns dropdownTemplate = [ '<div class="dk_container" id="dk_container_{{ id }}" tabindex="{{ tabindex }}">', '<a class="dk_toggle">', '<span class="dk_label">{{ label }}</span>', '</a>', '<div class="dk_options">', '<ul class="dk_options_inner">', '</ul>', '</div>', '</div>' ].join(''), // HTML template for dropdown options optionTemplate = '<li class="{{ current }}"><a data-dk-dropdown-value="{{ value }}">{{ text }}</a></li>', // Some nice default values defaults = { startSpeed : 1000, // I recommend a high value here, I feel it makes the changes less noticeable to the user theme : false, change : false }, // Make sure we only bind keydown on the document once keysBound = false ; // Called by using $('foo').dropkick(); methods.init = function (settings) { settings = $.extend({}, defaults, settings); return this.each(function () { var // The current <select> element $select = $(this), // Store a reference to the originally selected <option> element $original = $select.find(':selected').first(), // Save all of the <option> elements $options = $select.find('option'), // We store lots of great stuff using jQuery data data = $select.data('dropkick') || {}, // This gets applied to the 'dk_container' element id = $select.attr('id') || $select.attr('name'), // This gets updated to be equal to the longest <option> element width = settings.width || $select.outerWidth(), // Check if we have a tabindex set or not tabindex = $select.attr('tabindex') ? $select.attr('tabindex') : '', // The completed dk_container element $dk = false, theme ; // Dont do anything if we've already setup dropkick on this element if (data.id) { return $select; } else { data.settings = settings; data.tabindex = tabindex; data.id = id; data.$original = $original; data.$select = $select; data.value = _notBlank($select.val()) || _notBlank($original.attr('value')); data.label = $original.text(); data.options = $options; } // Build the dropdown HTML $dk = _build(dropdownTemplate, data); // Make the dropdown fixed width if desired $dk.find('.dk_toggle').css({ 'width' : width + 'px' }); // Hide the <select> list and place our new one in front of it $select.before($dk); // Update the reference to $dk $dk = $('#dk_container_' + id).fadeIn(settings.startSpeed); // Save the current theme theme = settings.theme ? settings.theme : 'default'; $dk.addClass('dk_theme_' + theme); data.theme = theme; // Save the updated $dk reference into our data object data.$dk = $dk; // Save the dropkick data onto the <select> element $select.data('dropkick', data); // Do the same for the dropdown, but add a few helpers $dk.data('dropkick', data); lists[lists.length] = $select; // Focus events $dk.bind('focus.dropkick', function (e) { $dk.addClass('dk_focus'); }).bind('blur.dropkick', function (e) { $dk.removeClass('dk_open dk_focus'); }); setTimeout(function () { $select.hide(); }, 0); }); }; // Allows dynamic theme changes methods.theme = function (newTheme) { var $select = $(this), list = $select.data('dropkick'), $dk = list.$dk, oldtheme = 'dk_theme_' + list.theme ; $dk.removeClass(oldtheme).addClass('dk_theme_' + newTheme); list.theme = newTheme; }; // Reset all <selects and dropdowns in our lists array methods.reset = function () { for (var i = 0, l = lists.length; i < l; i++) { var listData = lists[i].data('dropkick'), $dk = listData.$dk, $current = $dk.find('li').first() ; $dk.find('.dk_label').text(listData.label); $dk.find('.dk_options_inner').animate({ scrollTop: 0 }, 0); _setCurrent($current, $dk); _updateFields($current, $dk, true); } }; // Expose the plugin $.fn.dropkick = function (method) { if (!ie6) { if (methods[method]) { return methods[method].apply(this, Array.prototype.slice.call(arguments, 1)); } else if (typeof method === 'object' || ! method) { return methods.init.apply(this, arguments); } } }; // private function _handleKeyBoardNav(e, $dk) { var code = e.keyCode, data = $dk.data('dropkick'), options = $dk.find('.dk_options'), open = $dk.hasClass('dk_open'), current = $dk.find('.dk_option_current'), first = options.find('li').first(), last = options.find('li').last(), next, prev ; switch (code) { case keyMap.enter: if (open) { _updateFields(current.find('a'), $dk); _closeDropdown($dk); } else { _openDropdown($dk); } e.preventDefault(); break; case keyMap.up: prev = current.prev('li'); if (open) { if (prev.length) { _setCurrent(prev, $dk); } else { _setCurrent(last, $dk); } } else { _openDropdown($dk); } e.preventDefault(); break; case keyMap.down: if (open) { next = current.next('li').first(); if (next.length) { _setCurrent(next, $dk); } else { _setCurrent(first, $dk); } } else { _openDropdown($dk); } e.preventDefault(); break; default: break; } } // Update the <select> value, and the dropdown label function _updateFields(option, $dk, reset) { var value, label, data; value = option.attr('data-dk-dropdown-value'); label = option.text(); data = $dk.data('dropkick'); $select = data.$select; $select.val(value); $dk.find('.dk_label').text(label); reset = reset || false; if (data.settings.change && !reset) { data.settings.change.call($select, value, label); } } // Set the currently selected option function _setCurrent($current, $dk) { $dk.find('.dk_option_current').removeClass('dk_option_current'); $current.addClass('dk_option_current'); _setScrollPos($dk, $current); } function _setScrollPos($dk, anchor) { var height = anchor.prevAll('li').outerHeight() * anchor.prevAll('li').length; $dk.find('.dk_options_inner').animate({ scrollTop: height + 'px' }, 0); } // Close a dropdown function _closeDropdown($dk) { $dk.removeClass('dk_open'); } // Open a dropdown function _openDropdown($dk) { var data = $dk.data('dropkick'); $dk.find('.dk_options').css({ top : $dk.find('.dk_toggle').outerHeight() - 1 }); $dk.toggleClass('dk_open'); } /** * Turn the dropdownTemplate into a jQuery object and fill in the variables. */ function _build (tpl, view) { var // Template for the dropdown template = tpl, // Holder of the dropdowns options options = [], $dk ; template = template.replace('{{ id }}', view.id); template = template.replace('{{ label }}', view.label); template = template.replace('{{ tabindex }}', view.tabindex); блаблабла |
Вы опубликовали очень много кода.
Пожалуйста, локализуйте проблему! Выделите фрагмент кода, по которому есть вопрос и опубликуйте его отдельно. И, по возможности, уберите из кода мусор, чтобы нам легче было сориентироваться и помочь решить вашу проблему. Спасибо. P.S. код форматируют специальные теги [ js ] ... [/js], [ html ] ... [/html] и другие аналогичные, сам. http://javascript.ru/formatting |
Вот вам функция которая генерирует совершенно случайный набор цифр.
Ниже пример использования и сама функция Пример 1: uniqid(); Результат 1: 'a30285b160c14' Пример 2: uniqid('foo'); Результат 2: 'fooa30285b1cd361' Пример 3: uniqid('bar', true); Результат 3: 'bara20285b23dfd1.31879087' function uniqid (prefix, more_entropy) { if (typeof prefix == 'undefined') { prefix = ""; } var retId; var formatSeed = function (seed, reqWidth) { seed = parseInt(seed, 10).toString(16); // to hex str if (reqWidth < seed.length) { // so long we split return seed.slice(seed.length - reqWidth); } if (reqWidth > seed.length) { // so short we pad return Array(1 + (reqWidth - seed.length)).join('0') + seed; } return seed; }; if (!this.php_js) { this.php_js = {}; } if (!this.php_js.uniqidSeed) { // init seed with big random int this.php_js.uniqidSeed = Math.floor(Math.random() * 0x75bcd15); } this.php_js.uniqidSeed++; retId = prefix; // start with prefix, add current milliseconds hex string retId += formatSeed(parseInt(new Date().getTime() / 1000, 10), 8); retId += formatSeed(this.php_js.uniqidSeed, 5); // add seed hex string if (more_entropy) { // for more entropy we add a float lower to 10 retId += (Math.random() * 10).toFixed(8).toString(); } return retId; } |
Часовой пояс GMT +3, время: 23:09. |