更改另一个选择时更改选择值

时间:2015-11-24 13:29:31

标签: php jquery html checkbox

我有3个阵列,我从2选择框和一个复选框。我想要做的是,当我更改CMS时,复选框值需要像在数组中一样改变。

如果我在选择框中选择Joomla,那么我想要使用$aOnderdelen创建的复选框,然后在数组$aOnderdelen中我有一个带有Contact-form Foto-gallery和Carousel的数组这个3有一个数组,每个CMS的名称都有不同的值,这是当你选择其中一个和CMS时,复选框需要得到的值。

示例:我选择Joomla,我选择一个Contact-formulier而不是contact-formulier checbox获得3作为值。

$aCMS = array('SilverbeeCMS','Joomla','WP','Drupal','Scott');

$prijsPerUur=1;
$basisPrijs=
array(
    array('titel' => 'Kopie', 'uur' => '8'),
    array('titel' => 'Maatwerk', 'uur' => '10'),
    array('titel' => 'Aangekocht', 'uur' => '12'),
    array('titel' => 'Custom', 'uur' => '14')
     );

$aOnderdelen = array
(
    'Contact-formulier' => array 
        (
            'SilverbeeCMS'=>3,
            'WP'=>2,
            'Joomla'=>3,
            'Drupal'=>4,
            'Scott'=> 5
        ),
    'Foto-gallery' => array
        (
            'SilverbeeCMS'=>1,
            'WP' => 3,
            'Joomla'=> 4,
            'Drupal'=> 5,
            'Scott'=> 6
        ),
    'Carousel' => array
        (
            'SilverbeeCMS'=>1,
            'WP' => 4,
            'Joomla'=> 5,
            'Drupal'=> 6,
            'Scott'=> 7
        )
);

    ?>

这是选择和复选框

的HTML表单
<form action="" method="post">
   <select id="cms" class="form-control" name="cms">
      <?php foreach($aCMS as $key => $value): ?>
      <option value="<?php echo strtolower($aCMS[$key]); ?>"> 
      <?php echo $aCMS[$key]; ?>
      </option>
      <?php endforeach; ?>                          
   </select>    

  <label><?php echo $template.$verplicht; ?></label>

  <select id="templates" class="form-control" name="templates">
      <?php foreach($basisPrijs as $key => $value): ?>
      <option value="<?php echo $basisPrijs[$key]["uur"]; ?>">
      <?php echo $basisPrijs[$key]["titel"]; ?>
      </option>
      <?php endforeach; ?>                          
  </select>    

  <?php echo $oTitel; ?>
  <div class="checkbox col-xs-12">
     <div class="row">
        <?php foreach($aCMS as $cmsKey => $cmsValue) ?>            
        <?php foreach($aOnderdelen as $key => $value):
            foreach($value as $key1 => $value1)
              {};
              $i++;
              echo "<div class='checkbox'>
        <label><input class='check".$i."' type='checkbox' value='".strtolower($key)."'  name='".$key."'>".$key."</label></div>"
                    ;endforeach;?> 

      </div>
   </div>
</form>

3 个答案:

答案 0 :(得分:1)

你必须使用jquery和AJAX来动态地改变事物

简单示例

 $(document).ready(function() {
    $('#selector').change(function() {
        //do here things required about changing
        //You can also change DOM elements according to needs
        //and have Ajax requests
    })
 });

答案 1 :(得分:0)

我找到了怎么做

switch($("option:selected").val()) 
                 {
                 case "silverbeecms":
                         $(".check1").val(<?php echo $aOnderdelen["Contact-formulier"]["SilverbeeCMS"] ?>)
                         $(".check2").val(<?php echo $aOnderdelen["Foto-gallery"]["SilverbeeCMS"] ?>)
                         $(".check3").val(<?php echo $aOnderdelen["Carousel"]["SilverbeeCMS"] ?>)
                         break;

                case "joomla":
                         $(".check1").val(<?php echo $aOnderdelen["Contact-formulier"]["Joomla"] ?>)
                         $(".check2").val(<?php echo $aOnderdelen["Foto-gallery"]["Joomla"] ?>)
                         $(".check3").val(<?php echo $aOnderdelen["Carousel"]["Joomla"] ?>)
                         break;

                case "wp":
                         $(".check1").val(<?php echo $aOnderdelen["Contact-formulier"]["WP"] ?>)
                         $(".check2").val(<?php echo $aOnderdelen["Foto-gallery"]["WP"] ?>)
                         $(".check3").val(<?php echo $aOnderdelen["Carousel"]["WP"] ?>)
                         break;

                case "drupal":
                         $(".check1").val(<?php echo $aOnderdelen["Contact-formulier"]["Drupal"] ?>)
                         $(".check2").val(<?php echo $aOnderdelen["Foto-gallery"]["Drupal"] ?>)
                         $(".check3").val(<?php echo $aOnderdelen["Carousel"]["Drupal"] ?>)
                         break;

                case "scott":
                         $(".check1").val(<?php echo $aOnderdelen["Contact-formulier"]["Scott"] ?>)
                         $(".check2").val(<?php echo $aOnderdelen["Foto-gallery"]["Scott"] ?>)
                         $(".check3").val(<?php echo $aOnderdelen["Carousel"]["Scott"] ?>)
                         break;
                 }

答案 2 :(得分:0)

新答案更多Flexibel 第一个循环遍历PHP数组。

 <?PHP
    foreach($aCMS as $cmsKey => $cmsValue)
 ?>
 <?php
    foreach($aOnderdelen as $key => $value)
      :
       foreach($value as $key1 => $value1){};
  ?>

比使用数据attr来获取价格。

<input class="<?php echo strtolower($key);?>" type="checkbox" value="<?php echo strtolower($key)?>" name="<?php echo $key;?>" data-silverbeecms="<?php echo $value['SilverbeeCMS']; ?>" data-wp="<?php echo $value['WP'];?>" data-joomla="<?php echo $value['Joomla'];?>" data-drupal="<?php echo $value['Drupal'];?>" data-scott="<?php echo $value['Scott'];?>">

在获得数据中的价格后,您可以从JQUERY调用此数据并进行匹配。

urenOnderdelen = 0;  
    $("#sCms, #templates, .contact-formulier, .foto-gallery, .carousel").change(function() 
        {
            urenOnderdelen = 0;   
            urenTemplate = $("#templates").val();
            $(".contact-formulier, .foto-gallery, .carousel").each(function()
            {
                if(this.checked) 
                {
                    urenOnderdelen+=parseInt($(this).data($("option:selected").val())); 
                }  
            });  
            $("#output, #output1, #gVoor").hide().fadeIn(300);
            urenTemplate = $("#templates").val();  
            urenTemplate = parseInt(urenTemplate); 
            urenOnderdelen = parseInt(urenOnderdelen);
            totaal = urenOnderdelen + urenTemplate;
            $("#output").text(euroTeken + totaal*prijs);
        });