Intentando que se requiera la "ubicación" si el campo "nombre" no es nulo. No entiendo completamente Java o jQuery, por lo que los ejemplos que he estado viendo no tienen sentido. Lo siento por ser un novato, pero he estado buscando en Google y simplemente no veo la solución.
<form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>"> Name: <input type="text" name="name" required> <label for="location">Choose a location:</label> <select name="location" id="location"> <option value="ON">Ontario</option> <option value="BC">BC</option> <option value="AB">Alberta</option> <option value="MI">Michigan</option> </select> <br><br> <input type="submit" name="submit" value="Submit"> </form>intente usar lo siguiente. Hace que cada vez que se actualice la entrada "nombre", se comprobará si tiene un valor. Si lo hace, actualizará la entrada de "ubicación" para requerir.
function updateRequirements() { var name = document.getElementById('name').value; if (name != null) { document.getElementById('location').required = true; } else { document.getElementById('location').required = false; } } <form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>"> Name: <input type="text" id="name" name="name" onchange="updateRequirements();"> <label for="location">Choose a location:</label> <select name="location" id="location"> <option value="ON">Ontario</option> <option value="BC">BC</option>` <option value="AB">Alberta</option> <option value="MI">Michigan</option> </select> <br><br> <input type="submit" name="submit" value="Submit"> </form>Vea si esto ayuda para lo que está tratando de hacer.
Puede agregar el atributo deshabilitado usando Javascript al HTML para cada entrada que desee que se requiera. Luego verifique la validación de cada entrada requerida con un detector de eventos.
Desea que se requiera el nombre, así que deshabilite los botones de selección y envío. Verifique el campo de entrada del nombre usando un evento de desenfoque, lo que significa que el elemento ha perdido el foco. Una vez que se activa el evento si name.value está vacío, deshabilite el siguiente campo, que es su selección . Una vez que el nombre se completa correctamente, establecemos la propiedad del atributo deshabilitado en falso y luego verificamos el elemento de selección usando un evento de cambio . Cuando ha cambiado, siempre que no esté configurado en la configuración predeterminada que tiene un valor de nada "" , entonces configuramos el atributo deshabilitado de los botones de envío de verdadero a falso .
Nota: he agregado ID a cada uno de los campos de su formulario para consultar cada elemento usando esa ID.
// query each relavent selector and assign a variable let loc = document.querySelector('#location'); let submit = document.querySelector('#submit'); let name = document.querySelector('#name'); // disable the next required fields so the user can not move on until // they fill out the prior field properly submit.disabled = true; loc.disabled = true; // blur event handler to check the focus out fo the input field // for example when the user clicks out or hits tab name.addEventListener('blur', e => { // ternary conditional statement to check the value of the name field name.value !== '' ? loc.disabled = false : submit.disabled = true }) // change event handler to check the selects value on change loc.addEventListener('change', e => { // if conditional statement to check the value of the location select // makes sure the value is not set to "" which is the default value for // "Select A Location" also double check our name in case user removes after // selecting a location loc.value !== '' && name.value !== '' ? submit.disabled = false : submit.disabled = true }) <form method="post" action="<?php echo htmlspecialchars($_SERVER[" PHP_SELF "]);?>"> Name: <input type="text" id="name" name="name" required> <label for="location">Choose a location:</label> <select name="location" id="location"> <option value="">Select a Location</option> <option value="ON">Ontario</option> <option value="BC">BC</option> <option value="AB">Alberta</option> <option value="MI">Michigan</option> </select> <br><span id="error"></span><br> <input id="submit" class="unselectable" type="submit" name="submit" value="Submit"> </form>Tienes dos campos en tu formulario. El campo de nombre es obligatorio. la ubicación no. significa que no puede enviar el formulario si la ubicación es "nula". Y si la ubicación tiene un valor, puede establecer un parámetro obligatorio para nombrar la selección para evitar que el formulario se envíe sin estos dos campos.
<select name="location" id="location" required>