jquery do php, zaznaczony selectbox - rejestracja buddypress

Masz problem z modyfikacją wtyczki Wordpress, to odpowiednie miejsce na Twój wpis.
no avatar
Jarek Amdrecki
 
Posty: 26
Reputacja: 1 pkt
Od: 24 lut 2015, o 16:09

jquery do php, zaznaczony selectbox - rejestracja buddypress

przez Jarek Amdrecki » 26 mar 2015, o 20:35

Obrazek

Próbuję uzyskać coś takiego jak powyżej (plik register.php dla buddypress), w momencie gdy użytkownik wybierze typ konta pojawia się jego opis po lewej, a także pola dodatkowe na dole. I generalnie od strony funkcjonalności działa dzięki jquery:

Kod: Zaznacz cały
jQuery.noConflict()
jQuery(document).ready(function(){
   
   ( function ($) {
          $("#field_106").val("Użytkownik");
          $('#typ-fotograf').hide();
          $('#pola-fotograf').hide();
          $('#typ-autor').hide();
          $('#pola-autor').hide();
          $('#typ-uzytkownik').show();
          $('#pola-uzytkownik').show();
     
        $('#field_106').change(function () {
          $('#typ-fotograf').hide();
          $('#pola-fotograf').hide();
          $('#typ-autor').hide();
          $('#pola-autor').hide();
          $('#typ-uzytkownik').hide();
          $('#pola-uzytkownik').hide();
         if (this.options[this.selectedIndex].value == 'Fotograf') {
             $('#typ-fotograf').show();
             $('#pola-fotograf').show();
          var selected_type = 'fotograf';
         }
         if (this.options[this.selectedIndex].value == 'Autor') {
             $('#typ-autor').show();
             $('#pola-autor').show();
          var selected_type = 'autor';
         }
         if (this.options[this.selectedIndex].value == 'Użytkownik') {
             $('#typ-uzytkownik').show();
             $('#pola-uzytkownik').show();
          var selected_type = 'uzytkownik';
         }
     });
      
})(jQuery);
});


Niestety problem pojawia się w momencie wysyłania formularza z powodu błędnej wartości w:
Kod: Zaznacz cały
<input type="hidden" name="signup_profile_field_ids" id="signup_profile_field_ids" value="" />


A skoro tak to w skrypcie u góry dodałem zmienną selected_type, a do mojego pliku php:
Kod: Zaznacz cały
<?php

if(!isset($_POST['selected_type'])) {
   $_POST['selected_type'] = 'index';
}

switch($_POST['selected_type']){
   
   case 'fotograf':
      $acc_type_field_id = '104,106,121,122,123';         
      break;

   case 'autor':
      $acc_type_field_id = '104,106,115,116,117,118';   
      break;
    
   case 'uzytkownik':
      $acc_type_field_id = '104,106,115,116,117,118';
      break;

   default:
      $acc_type_field_id = '104,106,115,116,117,118';   

}
?>


Kod: Zaznacz cały
<input type="hidden" name="signup_profile_field_ids" id="signup_profile_field_ids" value="<?php echo $acc_type_field_id; ?>" />


niestety jak można się domyśleć nadal nie działa - zapewne z powodu braku przeładowania strony...

Jakieś sugestie odnośnie kodu, kierunku rozwiązania tego?

no avatar
Jarek Amdrecki
 
Posty: 26
Reputacja: 1 pkt
Od: 24 lut 2015, o 16:09

Re: jquery do php, zaznaczony selectbox - rejestracja buddyp

przez Jarek Amdrecki » 27 mar 2015, o 21:02

zmodyfikowałem SWITCH tak, aby zawierał moje pętle oraz odpowiedniego inputa, da się teraz załadować pola z adresu: ?select_type=cos, czyli pozostało mi podpiąć te akcję do mojego selectboxa, tak by przeładowywał tylko diva C

skoro to działało to dodałem do mojego pliku z kodem js

Kod: Zaznacz cały
$('#field_106').attr("onchange", "showUser(this.value)");

jQuery(document).ready(function showUser(str){
   
    if (str == "") {
        document.getElementById("show-fields").innerHTML = "";
        return;
    } else {
        if (window.XMLHttpRequest) {
            // code for IE7+, Firefox, Chrome, Opera, Safari
            xmlhttp = new XMLHttpRequest();
        } else {
            // code for IE6, IE5
            xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
        }
        xmlhttp.onreadystatechange = function() {
            if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
                document.getElementById("show-fields").innerHTML = xmlhttp.responseText;
            }
        }
        xmlhttp.open("GET","pelny/adres/do/wycietego/pliku/register-show-fields.php?selected_type="+str,true);
        xmlhttp.send();
    }
}

)(jQuery);


a całego switcha wywaliłem do pliku register-show-fields.php, w jego miejsce div#show-fields, niestety dostałem błędy, że odnoszę się do niezdefiniowanej funkcji bp_is_active...

jakiś pomysł czemu?!

EDIT: poprawiłem kod, wszystko działa jak na obrazku, wprawdzie bez ajaxa ale wystarczy.


Powrót do Modyfikacja wtyczek Wordpress

Kto przegląda forum Wordpress

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 1 gość