2016-04-06 14 views
0

Kod yazıcısı kullanıyorum ve bir kullanıcının ürünü derecelendirebileceği bir form var. Kodum aşağıda gösteriliyor. Başlangıçta gönder düğmesini devre dışı bırakmam gerekiyor ve bir kullanıcı sadece gönder düğmesinin etkinleştirilmesi gereken bir yıldız düğmesi seçtiğinde. Bunu nasıl başarabilirim? Lütfen bana rehberlik edin. çünkü ben internetten yapıştırdığım gibi javascript kodu anlamıyorum. Kimse bana yardımcı lütfen?Yalnızca bir yıldız düğmesi tıklandığında devre dışı bırakılmış bir düğmeyi nasıl etkinleştirilir

businessRateView.php

<?php $Vehicleid=$details['id']; ?> 
          <form action="<?php echo 'http://localhost/ci/businessRateCtrl/insertIntoBusinessReview/'.$Vehicleid?> " method="POST"> 

          <h2>Rate Ad</h2> 
          <p>All field marked with * are required</p> 
          <div style="color:red"> 
         <?php 
          $CI =& get_instance(); 
          $CI->load->library('form_validation'); 
          echo validation_errors(); 
         ?> 
         </div> 

          <div class="spacer-20"></div> 
          <h4>Your rating*</h4> 


          <h1><div class="rating" style="width:200px;float:left;padding-left:1px"> 
           <span class="rate-star" data-rate="Excellent">&bigstar;</span> 
           <span class="rate-star" data-rate="Good" >&bigstar;</span> 
           <span class="rate-star" data-rate="Okay" >&bigstar;</span> 
           <span class="rate-star" data-rate="Unsatisfied" >&bigstar;</span> 
           <span class="rate-star" data-rate="Terrible" >&bigstar;</span> 
           </div> 
          </h1> 

          <div style="float:right;padding-right:450px"> 
          <h3><label id="rateText" name="lblrating"></label></h3> 
          </div> 


          <div class="spacer-20"></div> 



          <h4>Write your review</h4> 
           <div class="spacer-20"></div> 
          <label class="col-md-4"> Title </label> 
          <input type="text" name="reviewTitle" placeholder="Title your review" class="form-control">  

          <div class="spacer-20"></div> 

          <label class="col-md-4">Your review </label>  
          <textarea rows="10" cols="103" name="review" placeholder="Write your review" class="form-control"></textarea> 
          <div class="spacer-20"></div> 
          <a class="btn btn-primary btn-lg" href=<?php echo 'http://localhost/ci/adpreview_ctrl/getad_preview/'.$Vehicleid?> onclick="return cancelConfirm();">Cancel</a> 

          <input type="submit" name="submitreview" class="btn btn-primary btn-lg" value="SUBMIT"> 

          </form> 
         </div> 
        </section> 
        </div> 
       </div> 
      </div> 
     </div> 
      <script type="text/javascript"> 
        window.onload = function() { 
        var starList = document.getElementsByClassName('rate-star'); 
        var numOfStars = starList.length; 

         for(var i = 0; i < numOfStars; i++) { 
          starList[i].addEventListener('click', starClickHandler, false); 
         } 
        } 

         function starClickHandler(event) { 
          var star = event.currentTarget; 

          setActive(star, false); 
          setActive(star, true); 
          document.getElementById('rateText').textContent = star.getAttribute('data-rate'); 
         } 

         function setActive(element, isActive) { 
          if(isActive) { 
          element.classList.add('active'); 
          element.nextElementSibling && setActive(element.nextElementSibling, isActive); 
          } 
          else { 
          element.classList.remove('active'); 
          element.previousElementSibling && setActive(element.previousElementSibling, isActive); 
          } 
          } 



         function cancelConfirm(){ 
          return confirm("Are you sure you want to cancel and leave this page?"); 
         } 

      </script> 

      <style type="text/css"> 
         #rateText{ 

        text-align:right; 

         } 
         .rating { 
          unicode-bidi: bidi-override; 
          direction: rtl ; 
           } 


           .rating > .rate-star.active, 
           .rating > .rate-star:hover, 
           .rating > .rate-star:hover ~ .rate-star { 
            color: #FFFF00; 
            cursor: default; 
            } 
      </style> 

businessRateCtrl.php

public function loadReviewPage($vehicleid){ 


    $data=array(); 
    $data['details']['id']=$vehicleid; 

    $this->load->view('pages/templates/header'); 
     $this->load->view('pages/businessRateView',$data); 
     $this->load->view('pages/templates/footer'); 



} 

public function insertIntoBusinessReview($Vehicleid){ 

     $data=array(); 
    $data['details']['id']=$Vehicleid; 

$this->form_validation->set_rules 
     (
      'lblrating', 
      'lblrating', 
      'required', 
      array 
      (
       'required'  => 'You have not provided Rating', 

      ) 
     ); 


      if ($this->form_validation->run() == FALSE) 
     { 
      $this->load->view('pages/templates/header'); 
      $this->load->view('pages/businessRateView',$data); 
      $this->load->view('pages/templates/footer'); 

     } 

else{ 
      $this->main_model->insertIntoBusinessReview($Vehicleid); 
     //$_SESSION['ads']=$_SESSION['ads']+1; 
     $this->session->set_flashdata('success_msg', 'Thank you! We will post your review soon'); 
     redirect("<?php echo 'http://localhost/ci/adpreview_ctrl/getad_preview/'.'$Vehicleid' ?>"); 

    } 

}

mainmodel.php

ortak işlev insertIntoBusinessReview ($ VehicleID) {

kodundan yukarıdan İşte

function starClickHandler(event) { 
          var star = event.currentTarget; 

          setActive(star, false); 
          setActive(star, true); 
          document.getElementById('rateText').textContent = star.getAttribute('data-rate'); 
$rating = $_POST['lblrating']; 

    if(($_POST['reviewTitle'])!==null || ($_POST['review'])!==null) 
    { 
    $title=$_POST['reviewTitle']; 
    $review=$_POST['review']; 

    $data=array('Vehicleid'=>$Vehicleid,'rating'=>$rating,'title'=>$title,'review'=> $review,'reviewPoster'=>$this->session->userdata['logged_in']['email']); 
    $this->db->insert('businessreviews',$data); 
    } 

    $data=array('Vehicleid'=>$Vehicleid,'rating'=>$rating,'reviewPoster'=>$this->session->userdata['logged_in']['email']); 
    $this->db->insert('businessreviews',$data); 


} 

o içine etiket "rateText" set "Mükemmel" "İyi" veya metin tıklandığında düğmenin aittir neyse.

"Mükemmel", "İyi" vb. Metinleri alıp db'ye eklemem gerekirse bunu nasıl yapabilirim? Bana yardım edecek kadar nazik misiniz?

+0

kullanabilirsiniz Yani ... size açıklayan, bize kod size yol istiyoruz? Bu site için gerçekten bu değil. – kirkpatt

+0

İşlevinizde: 'function setActive (öğe, isActive)' gönder düğmesine etkin hale getirilmesi için kodu koydu ... Düğmeyi "etkin değil" ve "etkin" olarak ayarlamayı biliyor musunuz, yoksa yardıma ihtiyacınız var mı? –

+0

@ kirkpatt- hayır alakasız bir şey söylersem özür dilerim, sadece bu butona nasıl tıklanacağını bilmek istiyorum. ve "lblrating" etiketinin yer aldığı metnin nasıl alınacağı, db'ye eklenecek. –

cevap

1

sadece Remove attribute

$(document).ready(function(){ 
    $(".rating .rate-star").click(function(){ 
     $(".active").removeClass("active"); 
     $(".rate-star:lt("+($(this).index()+1)+")").addClass("active"); 
     $("#rateText").html($(this).data("rate")); 
     $("#submitreview").removeAttr("disabled"); 
    }); 
}); 

Sample of your code

+0

Bu kodu nereye yapıştırmalıyım lütfen söyler misiniz –

+0

Bu jQuery olduğunu düşünüyorum, doğru muyum? Ben jQuery için yeni başlayan biriyim. Bu yüzden bu kodu nereye koyacağımı sordum. her neyse ben sorunu çözebildi. Yardımınız için teşekkür ederiz :-) :-) –

+0

tamam projenize jQuery kütüphanesi ekleyin ve sadece bu betiği verin – shahul

İlgili konular