Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- $('select.shs-select-level-1').change(function(){
- var $aSelected = $('.shs-wrapper-processed').find('label');
- if( $aSelected.hasClass('Extra-Label1') ){
- $('.Extra-Label1').text("State");
- }
- else{
- $('select.shs-select-level-2').before('<label class="Extra-Label1">State</label>');
- }
- });
- $('select.shs-select-level-2').change(function(){
- var $aSelected = $('.shs-wrapper-processed').find('label');
- if( $aSelected.hasClass('Extra-Label2') ){
- $('.Extra-Label2').text("City");
- }
- else{
- $('select.shs-select-level-3').before('<label class="Extra-Label2">City</label>');
- }
- });
- setInterval(function(){
- var $aSelected = $('.shs-wrapper-processed').find('label');
- var $bSelected = $('.shs-wrapper-processed').find('select');
- if( $aSelected.hasClass('Extra-Label2')&& $bSelected.hasClass('shs-select-level-3') ){
- $('.Extra-Label2').text("City");
- }
- else{
- $('select.shs-select-level-3').before('<label class="Extra-Label2">City</label>');
- }
- },1000);
- $('select.shs-select-level-1').before('<label class="shs-label">' + Drupal.t('Region') + '</label>');
- $('#field-select-a-city-add-more-wrapper').change(function () {
- $('#field-select-a-city-add-more-wrapper').find('label.shs-label').remove();
- $('select.shs-select-level-1').before('<label class="shs-label">' + Drupal.t('Region') + '</label>');
- $('select.shs-select-level-2').before('<label class="shs-label">' + Drupal.t('Country') + '</label>');
- $('select.shs-select-level-3').before('<label class="shs-label">' + Drupal.t('State') + '</label>');
- $('select.shs-select-level-4').before('<label class="shs-label">' + Drupal.t('City') + '</label>');
- });
- /**
- * @file
- * Custom behaviors for Simple hierarchical select:
- * Change the first option text from "- None -" to whatever you want (default: "- Any -").
- * Create labels for each level.
- */
- (function($) {
- Drupal.behaviors.customShsBehaviors = {
- attach: function (context, settings) {
- // Helper function for an option text replacement.
- // use: optionObj.replaceOptionText(); for default replacement from '- None -' to '- Any -'.
- // or optionObj.replaceOptionText('Foo'); to replace the '- None -' with 'Foo'.
- $.fn.replaceOptionText = function(replacement) {
- var replacement = replacement ? replacement : '- Any -';
- if ($(this).text() == Drupal.t('- None -')) {
- $(this).text(Drupal.t(replacement));
- }
- };
- // Function that helps to get the select element width including its padding and margin.
- $.fn.getSelectWidth = function() {
- var width = Math.round($(this).wrap('<span></span>').outerWidth(true));
- $(this).unwrap();
- return width;
- }
- // Define labels.
- var labels = ['Label-1', 'Label-2', 'Label-3'];
- // act when the ajaxStop event is triggered (there are no more Ajax requests being processed.)
- // see: @link http://api.jquery.com/Ajax_Events/ @endlink
- $('.shs-wrapper-processed').ajaxStop(function(event, xhr, settings) {
- $("select.shs-select").each(function(level) {
- // Replace the first option text using the helper function for an option text replacement.
- $("option", this).first().replaceOptionText();
- // Get label width.
- var labelWidth = $(this).getSelectWidth();
- // Create label.
- if ($("label[for='" + $(this).attr('id') + "']").length == 0) {
- $(this).parent().before(
- "<label for='" + $(this).attr('id') + "' style='display: inline-block; width: " + labelWidth + "px'>" + labels[level] + "</label>"
- );
- }
- // Remove the label if the select element has just been removed by clicking any option on lower level.
- // There might be several Ajax requests bound with this action,
- // so we have to make sure that our "removing process" will be executed at most once.
- // See: @link http://api.jquery.com/one/ @endlink
- $("option:not(:selected)", this).one("click", function() {
- $(".shs-wrapper-processed").parent().find("label").each(function() {
- if ($(this).attr('for').slice(-1) > level+1) {
- $(this).remove();
- }
- });
- });
- });
- });
- }
- };
- })(jQuery);
- /**
- * Implements hook_form_alter.
- */
- function YOUR_MODULE_NAME_form_alter(&$form, &$form_state, $form_id) {
- switch($form['#id']) {
- case 'YOUR-FORM-ID' :
- $form['#attached']['js'][] = drupal_get_path('module', 'YOUR_MODULE_NAME') . '/js/custom_shs_behaviors.js';
- break;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement