focus a select on any option selected from other select - javascript

I have 2 selects and what I need is to focus the 2nd select when selecting any option from the 1st select. My code is bellow as a sinpet code but it only set focus the 2nd select when a value is a number.
var acti = document.getElementById('activity');
var tip = document.getElementById('type');
activity.onchange = function () {
switch (this.value) {
case '1':
type.focus();
break;
}
};
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<select id="activity">
<option value="" selected="">choose one</option>
<option value="1">Act 1</option>
<option value="2">Act 2</option>
<option value="3">Act 3</option>
<option value="4">Act 4</option>
</select>
<select id="type">
<option value="">choose one</option>
</select>

I think this would work:
$('#activity').change(function(){ $('#type').focus() })
$('#activity').change(function(){
$('#type').focus()
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<select id="activity">
<option value="" selected="">choose one</option>
<option value="1">Act 1</option>
<option value="2">Act 2</option>
<option value="3">Act 3</option>
<option value="4">Act 4</option>
</select>
<select id="type">
<option value="">choose one</option>
</select>

This works:
Als note when you run this snippet only case '1': will trigger the focus with this code.
var acti = document.getElementById('activity');
var tip = document.getElementById('type');
acti.onchange = function () {
switch (this.value) {
case '1':
tip.focus();
break;
}
};
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<select id="activity">
<option value="" selected="">choose one</option>
<option value="1">Act 1</option>
<option value="2">Act 2</option>
<option value="3">Act 3</option>
<option value="4">Act 4</option>
</select>
<select id="type">
<option value="">choose one</option>
</select>

Related

3 select changes the parameters of the url

In my web page I have 3 selects and I need to make sure that when the value inside each select changes, the parameters that make up a url in the href change.
this is the html code of the select:
<select id="comune" name="comune">
<option value="">Comune</option>
<option value="comune1">comune 1</option>
<option value="comune2">comune 2</option>
<option value="comune3">comune 3</option>
</select>
<select id="nome" name="nome">
<option value="">Nome</option>
<option value="nome1">nome 1</option>
<option value="nome2">nome 2</option>
<option value="nome3">nome 3</option>
</select>
<select id="eta" name="eta">
<option value="">Nome</option>
<option value="eta1">eta 1</option>
<option value="eta2">eta 2</option>
<option value="eta3">eta 3</option>
</select>
cerca
this is the code in js that i am integrating, but i don't know how to put the other parameters:
$("#comune").change(function () {
console.log(this.value);
$("#cerca").attr('href', '/elenco-mappa.html?comune=' + this.value);
});
thank you so much for your help!
You will need an event listener for each select. The function can be the same for all three select. You can see a working snippet below:
const comune = document.getElementById('comune');
const nome = document.getElementById('nome');
const eta = document.getElementById('eta');
const cerca = document.getElementById('cerca');
function generateLink() {
cerca.href = `elenco-mappa.html?comune=${comune.value}&nome=${nome.value}&eta=${eta.value}`;
console.log(cerca.href);
}
comune.addEventListener('change', generateLink);
nome.addEventListener('change', generateLink);
eta.addEventListener('change', generateLink);
<select id="comune" name="comune">
<option value="">Comune</option>
<option value="comune1">comune 1</option>
<option value="comune2">comune 2</option>
<option value="comune3">comune 3</option>
</select>
<select id="nome" name="nome">
<option value="">Nome</option>
<option value="nome1">nome 1</option>
<option value="nome2">nome 2</option>
<option value="nome3">nome 3</option>
</select>
<select id="eta" name="eta">
<option value="">Nome</option>
<option value="eta1">eta 1</option>
<option value="eta2">eta 2</option>
<option value="eta3">eta 3</option>
</select>
cerca
I put a console.log to show you the result, but of course you should remove it
Is this What you want?
<select id="comune" name="comune">
<option value="">Comune</option>
<option value="comune1">comune 1</option>
<option value="comune2">comune 2</option>
<option value="comune3">comune 3</option>
</select>
<select id="nome" name="nome">
<option value="">Nome</option>
<option value="nome1">nome 1</option>
<option value="nome2">nome 2</option>
<option value="nome3">nome 3</option>
</select>
<select id="eta" name="eta">
<option value="">Nome</option>
<option value="eta1">eta 1</option>
<option value="eta2">eta 2</option>
<option value="eta3">eta 3</option>
</select>
cerca
$("#comune, #nome, #eta").on("change", function () {
var comune = encodeURIComponent($("#comune").val());
var nome = encodeURIComponent($("#nome").val());
var eta = encodeURIComponent($("#eta").val());
var link = `elenco-mappa.html?comune=${comune}&nome=${nome}&eta=${eta}`;
$("#cerca").attr("href", link);
})
var prams = {
comune :'',
nome : '',
eta : ''
}
$(document).ready(function(){
$('.select').change(function(){
var name = $(this).attr('name');
var val = $(this).val();
prams[name] = val;
$('#cerca').attr('href',`elenco-mappa.html?comune=${prams.comune}&nome${prams.nome}=&eta=${prams.eta}`);
});
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.0/jquery.min.js"></script>
<select id="comune" name="comune" class="select">
<option value="">Comune</option>
<option value="comune1">comune 1</option>
<option value="comune2">comune 2</option>
<option value="comune3">comune 3</option>
</select>
<select id="nome" name="nome" class="select">
<option value="">Nome</option>
<option value="nome1">nome 1</option>
<option value="nome2">nome 2</option>
<option value="nome3">nome 3</option>
</select>
<select id="eta" name="eta" class="select">
<option value="">Nome</option>
<option value="eta1">eta 1</option>
<option value="eta2">eta 2</option>
<option value="eta3">eta 3</option>
</select>
cerca

Change multiple dropdown values by selecting from a single dropdown

As the title says, Im trying to change the values on multiple dropdowns by changing a single dropdown. The multiple dropdowns need to get the same value that is selected in the "Select All" dropdown. Something very similar to a check all for checkboxes.
<select name="changeAll" id="changeAll" onchange="changeAll(this);">
<option value="select" selected="selected">Select</option>
<option value="option1">Option 1</option>
<option value="option2">Option 2</option>
<option value="option3">Option 3</option>
</select>
<select id="currency1" class="form-control">
<option selected value="option1" disabled>Option 1</option>
<option value="option1">Option 1</option>
<option value="option2">Option 2</option>
<option value="option3">Option 3</option>
</select>
<select id="currency2" class="form-control">
<option selected value="option1" disabled>Option 1</option>
<option value="option1">Option 1</option>
<option value="option2">Option 2</option>
<option value="option3">Option 3</option>
</select>
<select id="currency3" class="form-control">
<option selected value="option1" disabled>Option 1</option>
<option value="option1">Option 1</option>
<option value="option2">Option 2</option>
<option value="option3">Option 3</option>
</select>
The idea is that when a value is selected in the first dropdown "changeAll", all of the other dropdowns will have their values change to match the one selected in the "changeAll" dropdown.
Any help with this would be greatly appreciated.
Based on what you asked, I have tried to simulate. Try to run. Thnx
$('select#changeAll').on('change', function() {
var val_ = $('#changeAll :selected').text();
$('.child-changed option').map(function() {
$(this).text(val_);
$(this).value=val_;
});
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div>
<select name="changeAll" id="changeAll" >
<option value="ca_select" selected="selected">Select</option>
<option value="ca_option1">ca Option 1</option>
<option value="ca_option2">ca Option 2</option>
<option value="ca_option3">ca Option 3</option>
</select>
<div>
</div>
<select id="currency1" class="form-control child-changed">
<option selected value="c1_option1_selected" disabled>currency1 Option 1</option>
<option value="c1_option1">currency1 Option 1</option>
<option value="c1_option2">currency1 Option 2</option>
<option value="c1_option3">currency1 Option 3</option>
</select>
<div>
</div>
<select id="currency2" class="form-control child-changed">
<option selected value="c2_option1_selected" disabled>currency2 Option 1</option>
<option value="c2_option1">currency2 Option 1</option>
<option value="c2_option2">currency2 Option 2</option>
<option value="c2_option3">currency2 Option 3</option>
</select>
<div>

Add third list on dependent dropdown list JS

I'm trying to create a dynamic dependent drop down lists. This code below work fine with 2 dependency and I’m trying to add a third dependency. Have you got any idea ?
For exemple :
Status 1 = offer 1, offer 2, offer 3 , offer 4
Offer 1 = Option 1
Thanks for your help
UPDATE 11.15.09
Finally find a solution
$("#street").val([]);
$('#street option').hide();
$("#city").on("change", function() {
$('#street option')
.hide() // hide all
.filter('[value^="' + $(this).val() + '"]') // filter options with required value
.show(); // and show them
$("#street").val([]);
})
$("#number").val([]);
$('#number option').hide();
$("#street").on("change", function() {
$('#number option')
.hide() // hide all
.filter('[value^="' + $(this).val() + '"]') // filter options with required value
.show(); // and show them
$("#number").val([]);
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
City:
<select id="city" name="city">
<option value="0">Select City</option>
<option value="1">Manchester</option>
<option value="2">Leicester</option>
<option value="3">Londra</option>
</select>
Street:
<select id="street" name="street">
<option value="1.A">Street A</option>
<option value="1.B">Street B</option>
<option value="1.C">Street C</option>
<option value="2.D">Street D</option>
<option value="2.E">Street E</option>
<option value="2.F">Street F</option>
<option value="3.G">Street G</option>
<option value="3.H">Street H</option>
</select>
Number:
<select id="number" name="number">
<option value="1.A">1</option>
<option value="1.B">2</option>
<option value="1.C">3</option>
<option value="2.D">4</option>
<option value="2.E">5</option>
</select>
I fixed the problem with javascript. (no need to use jQuery)
Please try to use updated code below.
HTML:
<div>
<select name="select1" id="select1">
<option value="1" data-sync="1">Status 1</option>
<option value="2" data-sync="2">Status 2</option>
</select>
</div>
<div>
<select name="select2" id="select2">
<option value="1">offer 1</option>
<option value="1">offer 2</option>
<option value="1">offer 3</option>
<option value="1">offer 4</option>
<option value="1">offer 5</option>
<option value="2">offer 6</option>
<option value="2">offer 7</option>
<option value="2">offer 8</option>
<option value="2">offer 9<option>
</select>
</div>
<div>
<select name="select3" id="select3">
<option value="1">option 1</option>
<option value="2">option 2</option>
<option value="1">option 3</option>
<option value="2">option 4</option>
</select>
</div>
Javascript:
document.getElementById("select1").onchange=function() {
document.getElementById("select2").value=this.options[this.selectedIndex].getAttribute("data-sync");
document.getElementById("select3").value=this.options[this.selectedIndex].getAttribute("data-sync");
}
document.getElementById("select1").onchange();
Check the running code link below.
http://jsfiddle.net/f97u5nLa/33/

How to link two dropdown lists using data-attribute instead of their values?

How can I edit the following code so as to make it work using data-attributes? The reason for this is because in my example values will not be the same for the two dropdown lists so I want to link them with something else, like data-attribute.
<select name="" id="" class="select">
<option value="">Select</option>
<option value="1">Value 1</option>
<option value="2">Value 2</option>
</select>
<select name="" id="" class="select">
<option value="">Select</option>
<option value="1">Value 1</option>
<option value="2">Value 2</option>
</select>
$(function () {
var select = $('select.select');
select.change(function () {
select.not(this).val(this.value);
});
});
This should work (synchronizing lists by data attributes):
<select name="" id="" class="select">
<option data-id='1' value="">Select</option>
<option data-id='2' value="1">Value 1</option>
<option data-id='3' value="2">Value 2</option>
</select>
<select name="" id="" class="select">
<option data-id='1' value="5">Select</option>
<option data-id='2' value="3">Value 1</option>
<option data-id='3' value="4">Value 2</option>
</select>
(function () {
var select = $('select.select'), opt, dataAttr;
select.change(function () {
dataAttr = $(this).find(':selected').data('id');
select.not($(this)).each(function(){
if (opt = $(this).find('[data-id='+ dataAttr +']')){
$(opt).prop('selected', true);
}
});
});
})();

Submit a form on condition that atleast one drop-down option is selected

I have a form with 8 select (drop-down) fields. I need to the form to be successfully submitted only when at least 1 option from the 8 select fields has been selected. If none of the options is selected, I need an alert to pop-up when the user tries to submit without selecting at least one option.
I have no knowledge in javascript or php.
I hope I'm clear enough.
Thanks guys.
Here's a JSFiddle.
Here's the code:
<select class="dropdown1">
<option value="">Select</option>
<option value="1">Option 1</option>
<option value="2">Option 2</option>
</select>
<select class="dropdown2">
<option value="">Select</option>
<option value="1">Option 1</option>
<option value="2">Option 2</option>
</select>
<select class="dropdown3">
<option value="">Select</option>
<option value="1">Option 1</option>
<option value="2">Option 2</option>
</select>
<select class="dropdown4">
<option value="">Select</option>
<option value="1">Option 1</option>
<option value="2">Option 2</option>
</select>
<select class="dropdown5">
<option value="">Select</option>
<option value="1">Option 1</option>
<option value="2">Option 2</option>
</select>
<select class="dropdown6">
<option value="">Select</option>
<option value="1">Option 1</option>
<option value="2">Option 2</option>
</select>
<select class="dropdown7">
<option value="">Select</option>
<option value="1">Option 1</option>
<option value="2">Option 2</option>
</select>
<select class="dropdown8">
<option value="">Select</option>
<option value="1">Option 1</option>
<option value="2">Option 2</option>
</select>
<button class="submit-btn">Submit</button>
<script type="text/javascript">
$(".submit-btn").click(function(){
var dropdown_selected = false;
// Select all the selected dropdown values
var dropdown_values_arr = new Array();
dropdown_values_arr.push($(".dropdown1 option:selected").val());
dropdown_values_arr.push($(".dropdown2 option:selected").val());
dropdown_values_arr.push($(".dropdown3 option:selected").val());
dropdown_values_arr.push($(".dropdown4 option:selected").val());
dropdown_values_arr.push($(".dropdown5 option:selected").val());
dropdown_values_arr.push($(".dropdown6 option:selected").val());
dropdown_values_arr.push($(".dropdown7 option:selected").val());
dropdown_values_arr.push($(".dropdown8 option:selected").val());
// Loop over these values
for(var i=0; i<dropdown_values_arr.length; i++){
// If the value is not empty, then break the loop
// Condition is met: at least one dropdown is selected
if(dropdown_values_arr[i].length > 0){
dropdown_selected = true;
break;
}
}
// If there's no selected values in any of the dropdowns, then throw an alert message
if(dropdown_selected == false){
alert("Please fill at least one dropdown");
}
});
</script>
I do not quite understand your question, but if I'm correct, you want to check if something is selected in a drop-down box? (select)
Javascript (no JQ)
function checkdropdown() {
if(document.getElementById('select').value != "") {
return true;
}
else {
return false;
}
}
HTML code
<form action='file.php' action='post'>
<select name='select' id='select'>
<option value=''>Select an option</option>
<option value='1'>1</option>
<option value='2'>2</option>
<option value='3'>3</option>
<option value='4'>4</option>
<option value='5'>5</option>
<option value='6'>6</option>
<option value='7'>7</option>
<option value='8'>8</option>
</select>
<input type='submit' onClick='if(!checkdropdown()) {alert("You need to select a value!"); return false;}' value='Submit form' />
</form>
jsfiddle: http://jsfiddle.net/KNd47/

Categories