简体   繁体   中英

How to make select required upon parent option selected with JavaScript or jQuery

I'm trying to make subcategory required only upon PDF option selected from the category select.

I have tried this JavaScript but its not working.

 function getVal(ele){ var element = document.getElementById("category") ele.value == "pdf" ? element.required =true : element.required =false } getVal(document.getElementById("subcat")) 
 <select id="category" name="category" required> <option value="">select category</option> <option>doc</option> <option value="pdf">pdf</option> <option>gifs</option> </select> <select id="subcat" name="subcat"> <option value="">select type</option> <option>normal pdf</option> <option>other pdf</option> </select> 

But its not working, what am I doing wrong?

using jQuery:

 var $category = $("#category") var $subcat = $("#subcat") $category.on('change', function() { $subcat.prop('required', $(this).val() === "pdf") }) 
 <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <select id="category" name="category" required> <option value="">select category</option> <option>doc</option> <option value="pdf">pdf</option> <option>gifs</option> </select> <select id="subcat" name="subcat"> <option value="">select type</option> <option>normal pdf</option> <option>other pdf</option> </select> 

With pure JS:

var $category = document.querySelector("#category")
var $subcat = document.querySelector("#subcat")

$category.addEventListener('change', function() {
    $subcat.required = this.value === "pdf"
})

This runs before the user selected something from the menu. Adding a change event listener to the select will do it. Also, you're mixing up ele and element .

function getVal(ele) {
  ele.addEventListener('change', function() {
    var element = document.getElementById("category")
    element.value == "pdf" ? ele.required = true : ele.required = false
  })
}
getVal(document.getElementById("subcat"))

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM