Html5 Required Attribute One Of Two Fields December 20, 2023 Post a Comment I have a form with two required input fields: Solution 1: Update 2020-06-21 (ES6):Given that jQuery has become somewhat unfashionable in the JavaScript world and that ES6 provides some nice syntactic sugar, I have written a pure JS equivalent to the original answer:document.addEventListener('DOMContentLoaded', function() { const inputs = Array.from( document.querySelectorAll('input[name=telephone], input[name=mobile]') ); constinputListener = e => inputs .filter(i => i !== e.target) .forEach(i => (i.required = !e.target.value.length)); inputs.forEach(i => i.addEventListener('input', inputListener)); }); CopyNote that the above uses arrow functions and Array.from so does not work in IE11 without the use of a transpiler such as Babel.Original Answer (jQuery):I played around with some ideas and now have a working solution for this problem using jQuery: jQuery(function ($) { var $inputs = $('input[name=telephone],input[name=mobile]'); $inputs.on('input', function () { // Set the required property of the other input to false if this input is not empty. $inputs.not(this).prop('required', !$(this).val().length); }); });Copy<scriptsrc="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script><formmethod="post"> Telephone: <inputtype="tel"name="telephone"value=""required><br>Mobile: <inputtype="tel"name="mobile"value=""required><br><inputtype="submit"value="Submit"></form>CopyThis uses the input event on both inputs, and when one is not empty it sets the required property of the other input to false.I've written a jQuery plugin wrapping the above JavaScript code so that it can be used on multiple groups of elements.Solution 2: You would better do form data validation with Javascript anyway, because the HTML5 validation doesn't work in older browsers. Here is how: Baca JugaSubmit Button Not Working In Bootstrap FormWord Limits On Multiple Text AreasHow To Capitalize Only The First Letter Of An Html Option Element Using Css?<!DOCTYPE html><html><head><metacharset="utf-8"><title>Form Validation Phone Number</title></head><body><formname="myForm"action="data_handler.php"><inputtype="tel"name="telephone"><inputtype="tel"name="mobile"><inputtype="button"value="Submit"onclick="validateAndSend()"></form><script>functionvalidateAndSend() { if (myForm.telephone.value == '' && myForm.mobile.value == '') { alert('You have to enter at least one phone number.'); returnfalse; } else { myForm.submit(); } } </script></body></html>Copy. Live demo here: http://codepen.io/anon/pen/LCpue?editors=100. Let me know if this works for you, if you will. Solution 3: For two text fields @Andy's answer is working awesome, but in case of more than two fields we can use something like this. jQuery(function ($) { var $inputs = $('input[name=phone],input[name=mobile],input[name=email]'); $inputs.on('input', function () { var total = $('input[name=phone]').val().length + $('input[name=mobile]').val().length + $('input[name=email]').val().length; $inputs.not(this).prop('required', !total); }); }); CopySolution 4: Based on Andy's answer, but I needed a checkbox implementation & came up with this. what role(s) do you want? <inputtype="checkbox"data-manyselect="roler"name="author"required><inputtype="checkbox"data-manyselect="roler"name="coder"required><inputtype="checkbox"data-manyselect="roler"name="teacher"required> where will you work? <inputtype="checkbox"data-manyselect="placement"name="library"required><inputtype="checkbox"data-manyselect="placement"name="home"required><inputtype="checkbox"data-manyselect="placement"name="office"required>CopyjQuery(function ($) { // get anything with the data-manyselect// you don't even have to name your group if only one groupvar $group = $("[data-manyselect]"); $group.on('input', function () { var group = $(this).data('manyselect'); // set required property of other inputs in group to falsevar allInGroup = $('*[data-manyselect="'+group+'"]'); // Set the required property of the other input to false if this input is not empty.var oneSet = true; $(allInGroup).each(function(){ if ($(this).prop('checked')) oneSet = false; }); $(allInGroup).prop('required', oneSet) }); }); CopyHere for anyone else getting here by googling and wanting a quick solution for one of many checkboxes. Share You may like these postsDisable Submit Button With Jquery Until All Fields Have Values (input, Radio, Select, Checkbox)Get The Entered Value On Number Input Field, Not The ParsedCheck If Value Insert Exist In Dropdown With AngularjsHtml Validation Error For Html Lang Attribute Post a Comment for "Html5 Required Attribute One Of Two Fields"
Post a Comment for "Html5 Required Attribute One Of Two Fields"