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

时间:2022-12-22 15:33:59

I got 3 array's where from i make 2 select box and a checkbox. What i want to do is that when i change CMS the checkbox value needs to change like in the array.

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

if i choose Joomla in the select box then i want the checkbox that is made with the $aOnderdelen, then in the array $aOnderdelen i have an array with Contact-form Foto-gallery and Carousel and this 3 have an array with the name of each CMS with different values and this are the values that the checkbox needs to get when you choose one of those and the CMS.

如果我在选择框中选择Joomla然后我想要使用$ aOnderdelen制作的复选框,那么在数组$ aOnderdelen中我有一个带有Contact-form Foto-gallery和Carousel的数组,这3个有一个名为的数组每个CMS具有不同的值,这是当您选择其中一个和CMS时,复选框需要获取的值。

Example: i choose Joomla and i choose a Contact-formulier than contact-formulier checbox gets 3 as value.

示例:我选择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
        )
);

    ?>

This is the HTML form where the Select and checkbox are

这是选择和复选框所在的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 个解决方案

#1


1  

You have to use jquery along with AJAX for changing things dynamically

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

Simple example as

简单的例子如

 $(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
    })
 });

#2


0  

I found how to do it

我发现了怎么做

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;
                 }

#3


0  

New Answer more Flexibel First Loop through the PHP array.

新的答案更多Flexibel First循环遍历PHP数组。

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

Than use data attr to get the prices.

比使用数据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'];?>">

After you get the Price in the data you can call this data from JQUERY and do the Match.

获得数据中的Price后,您可以从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);
        });

#1


1  

You have to use jquery along with AJAX for changing things dynamically

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

Simple example as

简单的例子如

 $(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
    })
 });

#2


0  

I found how to do it

我发现了怎么做

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;
                 }

#3


0  

New Answer more Flexibel First Loop through the PHP array.

新的答案更多Flexibel First循环遍历PHP数组。

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

Than use data attr to get the prices.

比使用数据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'];?>">

After you get the Price in the data you can call this data from JQUERY and do the Match.

获得数据中的Price后,您可以从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);
        });