Advertisement
Guest User

Untitled

a guest
Dec 21st, 2014
144
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.62 KB | None | 0 0
  1. $('select.shs-select-level-1').change(function(){
  2.  
  3. var $aSelected = $('.shs-wrapper-processed').find('label');
  4.  
  5. if( $aSelected.hasClass('Extra-Label1') ){
  6. $('.Extra-Label1').text("State");
  7. }
  8. else{
  9. $('select.shs-select-level-2').before('<label class="Extra-Label1">State</label>');
  10. }
  11.  
  12. });
  13.  
  14. $('select.shs-select-level-2').change(function(){
  15.  
  16. var $aSelected = $('.shs-wrapper-processed').find('label');
  17.  
  18. if( $aSelected.hasClass('Extra-Label2') ){
  19. $('.Extra-Label2').text("City");
  20. }
  21.  
  22. else{
  23. $('select.shs-select-level-3').before('<label class="Extra-Label2">City</label>');
  24. }
  25. });
  26.  
  27. setInterval(function(){
  28. var $aSelected = $('.shs-wrapper-processed').find('label');
  29. var $bSelected = $('.shs-wrapper-processed').find('select');
  30. if( $aSelected.hasClass('Extra-Label2')&& $bSelected.hasClass('shs-select-level-3') ){
  31. $('.Extra-Label2').text("City");
  32. }
  33. else{
  34. $('select.shs-select-level-3').before('<label class="Extra-Label2">City</label>');
  35. }
  36.  
  37. },1000);
  38.  
  39. $('select.shs-select-level-1').before('<label class="shs-label">' + Drupal.t('Region') + '</label>');
  40.  
  41. $('#field-select-a-city-add-more-wrapper').change(function () {
  42. $('#field-select-a-city-add-more-wrapper').find('label.shs-label').remove();
  43. $('select.shs-select-level-1').before('<label class="shs-label">' + Drupal.t('Region') + '</label>');
  44. $('select.shs-select-level-2').before('<label class="shs-label">' + Drupal.t('Country') + '</label>');
  45. $('select.shs-select-level-3').before('<label class="shs-label">' + Drupal.t('State') + '</label>');
  46. $('select.shs-select-level-4').before('<label class="shs-label">' + Drupal.t('City') + '</label>');
  47. });
  48.  
  49. /**
  50. * @file
  51. * Custom behaviors for Simple hierarchical select:
  52. * Change the first option text from "- None -" to whatever you want (default: "- Any -").
  53. * Create labels for each level.
  54. */
  55. (function($) {
  56. Drupal.behaviors.customShsBehaviors = {
  57. attach: function (context, settings) {
  58.  
  59. // Helper function for an option text replacement.
  60. // use: optionObj.replaceOptionText(); for default replacement from '- None -' to '- Any -'.
  61. // or optionObj.replaceOptionText('Foo'); to replace the '- None -' with 'Foo'.
  62. $.fn.replaceOptionText = function(replacement) {
  63. var replacement = replacement ? replacement : '- Any -';
  64. if ($(this).text() == Drupal.t('- None -')) {
  65. $(this).text(Drupal.t(replacement));
  66. }
  67. };
  68.  
  69. // Function that helps to get the select element width including its padding and margin.
  70. $.fn.getSelectWidth = function() {
  71. var width = Math.round($(this).wrap('<span></span>').outerWidth(true));
  72. $(this).unwrap();
  73. return width;
  74. }
  75.  
  76. // Define labels.
  77. var labels = ['Label-1', 'Label-2', 'Label-3'];
  78.  
  79. // act when the ajaxStop event is triggered (there are no more Ajax requests being processed.)
  80. // see: @link http://api.jquery.com/Ajax_Events/ @endlink
  81. $('.shs-wrapper-processed').ajaxStop(function(event, xhr, settings) {
  82.  
  83. $("select.shs-select").each(function(level) {
  84.  
  85. // Replace the first option text using the helper function for an option text replacement.
  86. $("option", this).first().replaceOptionText();
  87.  
  88. // Get label width.
  89. var labelWidth = $(this).getSelectWidth();
  90.  
  91. // Create label.
  92. if ($("label[for='" + $(this).attr('id') + "']").length == 0) {
  93. $(this).parent().before(
  94. "<label for='" + $(this).attr('id') + "' style='display: inline-block; width: " + labelWidth + "px'>" + labels[level] + "</label>"
  95. );
  96. }
  97.  
  98. // Remove the label if the select element has just been removed by clicking any option on lower level.
  99. // There might be several Ajax requests bound with this action,
  100. // so we have to make sure that our "removing process" will be executed at most once.
  101. // See: @link http://api.jquery.com/one/ @endlink
  102. $("option:not(:selected)", this).one("click", function() {
  103. $(".shs-wrapper-processed").parent().find("label").each(function() {
  104. if ($(this).attr('for').slice(-1) > level+1) {
  105. $(this).remove();
  106. }
  107. });
  108. });
  109. });
  110. });
  111. }
  112. };
  113. })(jQuery);
  114.  
  115. /**
  116. * Implements hook_form_alter.
  117. */
  118. function YOUR_MODULE_NAME_form_alter(&$form, &$form_state, $form_id) {
  119.  
  120. switch($form['#id']) {
  121. case 'YOUR-FORM-ID' :
  122. $form['#attached']['js'][] = drupal_get_path('module', 'YOUR_MODULE_NAME') . '/js/custom_shs_behaviors.js';
  123. break;
  124. }
  125. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement