JSFiddle - React, Tailwind, and code Playground

by Paal Joachim Romdahl

HTML

<div id="calc-form">
	<!-- <form oninput="updateRanges()"> -->
<form oninput="updateRanges()" onchange="updateRanges()">  <!-- Works party in i IE--->       	                 
              <div id="calc-heading">Dugnadskalkulator</div>                           
              
         <div id="calc-content">                                  
                      <div class="slider">How much money does the group want to earn?  
                       <div class="styled-output"><output for="r10">1400</output>kr</div> 
                                       
                                       <input type="range" name="r10" step="1400" min="1400" max="160000" value="0">
                      </div>  

	<p> 	  <div class="resultat-salgprodukter">Amount of products to sell: <span>20</span> <br /></p>                                 
                        <div class="slider">Select amount of participants in the group: <br /> 
                         <div class="styled-output"><output for="r20">1</output></div> 
                                       
                                       <input type="range" name="r20" step="1" min="1" max="40" value="1">
                        </div>
              </div>          
                        
                                                       
               <div class="resultat-salgdeltager">Amount of birthday boxes per participant: <br/><span>20</span></div>
               
                                  
               <div id="calc-sammendrag-heading">Summery</div>
               <div class="calc-sammendrag">
                                  
               		<p>
               		<div class="resultat-salgprodukter">
                  		 Total products: <span>20</span> 
               		</div>
                                  
               		<div class="resultat-kartonger">
               		     Amount of cartons of 20 boxes: <span>1</span>
              		</div>
                                  
...

CSS

/* the full form area */
#calc-form  {
	border: 1px solid #333;
	/* padding: 17px; */
	border-radius: 7px;
	box-shadow: 0px 3px 5px #444;
	width: 300px;
	
}

#calc-heading {
	background: #a0ce4e;
	color: #fff;
	font-size: 26px;
	border-bottom: 1px solid #333;
	padding: 17px;
	border-radius: 7px 7px 0px 0px;
	font-family: times, serif;
	text-align: center;
	text-shadow: 1px 1px 1px #0a0909;
	letter-spacing: 1.8px;
}

#calc-content {
	padding: 13px;
	font-size: 18px;
	background: #f8f1f1;
}

.styled-output {
	clear: both;
	
	/* text-align: center; */
	margin: 5px 0 0 0;
	padding: 5px 10px 0 9px;
	/* width: 75px; */	
	
	text-align: center;
	border: 1px solid #dbc9c9;
	color: #67990f;
	font-size: 20px;
}

.resultat-salgdeltager {
    text-align: center;
    color: #67990f;
    margin-bottom: 7px;
    font-size: 18px;
}	

#calc-sammendrag-heading {
	font-size: 26px;
	border-bottom: 1px solid #333;
	padding: 17px;
	border-radius: 7px 7px 0px 0px;
	font-family: times, serif;
	text-align: center;
}

.calc-sammendrag {
	text-align: left;
	/* border: 1px solid #333; */
	padding: 4px;
}



	
input[type=range] {
  -webkit-appearance: none;
  margin: 5px 0 25px 0;
  width: 100%;
}

input[type=range]:focus {
  outline: none;
}
input[type=range]::-webkit-slider-runnable-track {
  width: 100%;
  height: 8.4px;
  cursor: pointer;
  animate: 0.2s;
  box-shadow: 1px 1px 1px #000000, 0px 0px 1px #0d0d0d;
  background: #3071a9;
  border-radius: 1.3px;
  border: 0.2px solid #010101;
}
input[type=range]::-webkit-slider-thumb {
  box-shadow: 1px 1px 1px #000000, 0px 0px 1px #0d0d0d;
  border: 1px solid #000000;
  height: 22px;
  width: 25px;			/* Changed */
  border-radius: 10px;   /* 3px */
  background:  #a0ce4e;	/* #fff */
  cursor: pointer;
  -webkit-appearance: none;
  margin-top: -7px;		/* Changed */
  
}
input[type=range]:focus::-webkit-slider-runnable-track {
  background: #367ebd;
}
input[type=range]::-moz-range-track {
  width: 100%;
  height: 8.4px;
  cursor: pointer;
 ...

JavaScript

function updateRanges(){
	
	// update all ranges' outputs (visual effect only
	// since we do math on range values and not outputs)
	jQuery('input[type="range"]').each(function(){
		var rangeNum = jQuery(this).val(),
				rangeFor = jQuery(this).attr('name');
		
		//jQuery('output[for="'+rangeFor+'"]').val(rangeNum);
        
        // The following code makes the calculator work in IE
        jQuery('output[for="'+rangeFor+'"]').replaceWith('<output for ="'+rangeFor+'">'+rangeNum+'</output>');
        
	});
	
	// update the total value
	var rangeVals = {
		'one' : parseInt(jQuery('input[name="r10"]').val()), // Hvor mye penger ønsker gruppen å tjene? 
		'two' : parseInt(jQuery('input[name="r20"]').val()), // Velg antall deltagere i gruppen: 
	};
	
	// Do the math
	jQuery('.resultat-salgprodukter span').html(rangeVals.one / 70); // Antall produkter å selge
	jQuery('.resultat-salgdeltager span').html(Math.round((rangeVals.one / 70 / rangeVals.two) * 1) / 1); // Antall salg pr. deltager:  1 = no decimals, 100 = 2 decimals */
	
	
	// Sammendrag
	jQuery('.resultat-produktertotalt span').html(Math.round((rangeVals.one / 70) * 1) / 1); // Antall Produkter Totalt:
	jQuery('.resultat-kartonger span').html(rangeVals.one / 70 / 20); // Antall Kartonger a 20 esker
		
	//jQuery('.result-salg span').html(Math.round((rangeVals.one / rangeVals.two) * 1) / 1); /* 1 = no decimals, 100 = 2 decimals */
	
    // Code that helps the calculator work in IE
	jQuery('input').change( function() {
	    updateRanges()
	});    
	
}