javascript - 如何在 javascript 中获取具有 3 个选项的输入单选按钮的值?

标签 javascript html input radio-button

首先:我想澄清一下,我确实在这里寻找过这个问题,但解决方案对我不起作用。

我正在为大学做一个小项目。

我需要注册新用户的信息,但我卡在单选按钮上以获取用户的性别以及他是什么类型的用户。

这是 HTML

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title>Registro</title>
  </head>
  <body>
    <form>

       <label for="txtIdentificacion">Identifación</label>
       <input type="text" placeholder="Número de identificación" id="txtIdentificacion" required>

       <label for="txtPrimerNombre">Primer Nombre</label>
       <input type="text" placeholder="Primer Nombre" id="txtPrimerNombre"  required>

       <label for="txtSegundoNombre">Segundo Nombre</label>
       <input type="text" placeholder="Segundo Nombre" id="txtSegundoNombre">

       <label for="txtPrimerApellido">Primer Apellido</label>
       <input type="text" placeholder="Primer Apellido" id="txtPrimerApellido"  required>

       <label for="txtSegundoApellido">Segundo Apellido</label>
       <input type="text" placeholder="Segundo Apellido" id="txtSegundoApellido" >

       <label for="txtNacionalidad">Nacionalidad</label>
       <input type="text" placeholder="Nacionalidad" id="txtNacionalidad"  required>

       <label for="txtTipoIdentificacion">Tipo de Identificacion</label>
       <input type="text" placeholder="Tipo de Identificacion" id="txtTipoIdentificacion"  required>

       <label for="datFechaNacimiento">Fecha de nacimiento</label>
       <input type="date" id="datFechaNacimiento"  required>

       <label for="">Género:</label>

       <label for="rbtFemenino">Femenino</label>
       <input type="radio" name="rbtGenero" value="Femenino" id="rbtFemenino" required >

       <label for="rbtMasculino">Masculino</label>
       <input type="radio" name="rbtGenero" value="Masculino" id="rbtMasculino" required >

       <label for="rbtIndefinido">Indefinido</label>
       <input type="radio" name="rbtGenero" value="Indefinido" id="rbtIndefinido" required>

       <label for="numNumeroTelefonico">Número Telefonico </label>
       <input type="number" placeholder="Sin guiones" id="numNumeroTelefonico"  required>

       <label for="txtNombreUsuario">Nombre de usuario</label>
       <input type="text" placeholder="Nombre de usuario" id="txtNombreUsuario"  required>

       <label for="txtPassword">Contraseña</label>
       <input type="password" placeholder="Contraseña" id="txtPassword"  required>

       <label for="rbtTipoUsuario">Soy un instructor</label>
       <input type="radio" name="rbtTipoUsuario" value="Instructor" id="rbtInstructor">

       <label for="rbtTipoUsuario">Soy un cliente</label>
       <input type="radio" name="rbtTipoUsuario" value="Cliente" id="rbtCliente">

       <label for="numEmergencia">Número de emergencia</label>
       <input type="number" placeholder="Sin guiones" id="numEmergencia"  required>


       <button type="submit" class="btnRegistrar" id="btnRegistrar">Registrar</button>
   </div>
 </div>
</form>
<script src="js/logicaNegociosUsuarios.js"></script>
<script src="js/logicaInterfazUsuarios.js"></script>


  </body>
</html>

JS

document.querySelector('#btnRegistrar').addEventListener('click', registrarNuevoUsuario);

registrarNuevoUsuario()



function registrarNuevoUsuario() {
    var aNuevoUsuario = [];
    var sIdentificacion = '';
    var sPrimerNombre = '';
    var sSegundoNombre = '';
    var sPrimerApellido = '';
    var sSegundoApellido = ''
    var sNacionalidad ='';
    var sTipoIdentificacion = '';
    var sFechaNacimiento = '';
    var sGender = '';
    var nNumeroTelefonico = 0;
    var sNombreUsuario = '';
    var sPassword = '';
    var nEdad = 0;
    var sTipoUsuario = '';
    var nEmergencia = '';

    sIdentificacion = document.querySelector('#txtIdentificacion').value;
    sPrimerNombre = document.querySelector('#txtPrimerNombre').value;
    sSegundoNombre = document.querySelector('#txtSegundoNombre').value;
    sPrimerApellido = document.querySelector('#txtPrimerApellido').value;
    sSegundoApellido = document.querySelector('#txtSegundoApellido').value;
    sNacionalidad = document.querySelector('#txtNacionalidad').value;
    sTipoIdentificacion = document.querySelector('#txtTipoIdentificacion').value;
    sFechaNacimiento = document.querySelector('#datFechaNacimiento').value;
    sGenero = document.querySelector('input[name="rbtGenero"]:checked') ?  document.querySelector('input[name="rbtGenero"]:checked').value : '';
    nNumeroTelefonico = document.querySelector('#numNumeroTelefonico').value;
    sNombreUsuario = document.querySelector('#txtNombreUsuario').value;
    sPassword = document.querySelector('#txtPassword').value;
    nEdad = calcularEdad();
    sTipoUsuario = document.querySelector('input[name="rbtTipoUsuario"]:checked') ? document.querySelector('input[name="rbtUserTipoUsuario"]:checked').value: '';
    nEmergencia = document.querySelector('#numEmergencia').value;

    aNuevoUsuario.push(sIdentificacion, sPrimerNombre, sSegundoNombre, sPrimerApellido, sSegundoApellido, sNacionalidad, sTipoIdentificacion, sFechaNacimiento, sGenero, nNumeroTelefonico, sNombreUsuario, sPassword, nEdad, sTipoUsuario, nEmergencia );



}

llenarTablaUsuarios();


function llenarTablaUsuarios(){


  var listaUsuarios = obtenerUsuarios();
  var cuerpoTabla = document.querySelector('#tblUserInfo tbody' );

  cuerpoTabla.innerHTML = '';

  for (var i = 0; i < listaUsuarios.length; i++) {


    var fila = cuerpoTabla.insertRow(i);

    var celdaCedula = fila.insertCell();
    var celdaPrimerNombre = fila.insertCell();
    var celdaSegundoNombre = fila.insertCell();
    var celdaPrimerApellido = fila.insertCell();
    var celdaSegundoApellido = fila.insertCell();
    var celdaNacionalidad = fila.insertCell();
    var celdaTipoIdentificacion = fila.insertCell();
    var celdaFechaNacimiento = fila.insertCell();
    var celdaEdad = fila.insertCell();
    var celdaGenero = fila.insertCell();
    var celdaNumeroTelefonico = fila.insertCell();
    var celdaTipoUsuario = fila.insertCell();
    var celdaNumeroEmergencia = fila.insertCell();
    var celdaNombreUsuario = fila.insertCell();


    celdaCedula.innerHTML = listaUsuarios[i][0];
    celdaPrimerNombre.innerHTML = listaUsuarios[i][1];
    celdaSegundoNombre.innerHTML = listaUsuarios[i][2];
    celdaPrimerApellido.innerHTML = listaUsuarios[i][3];
    celdaSegundoApellido.innerHTML = listaUsuarios[i][4];
    celdaNacionalidad.innerHTML = listaUsuarios[i][5];
    celdaTipoIdentificacion.innerHTML = listaUsuarios[i][6];
    celdaFechaNacimiento.innerHTML = listaUsuarios[i][7];
    celdaNombreUsuario.innerHTML = listaUsuarios[i][10];
    celdaEdad.innerHTML = listaUsuarios[i][12];
    celdaGenero.innerHTML = listaUsuarios[i][8];
    celdaNumeroTelefonico.innerHTML = listaUsuarios[i][9];
    celdaTipoUsuario.innerHTML = listaUsuarios[i][13]
    celdaNumeroEmergencia.innerHTML = listaUsuarios[i][14]

  }

}

function calcularEdad() {

  var fechaHoy = new Date();
  var fechaNacimiento = new Date(document.querySelector("#datFechaNacimiento").value);
  var edad = fechaHoy.getFullYear() - fechaNacimiento.getFullYear();
  var meses = fechaHoy.getMonth() - fechaNacimiento.getMonth();
  if (meses < 0 || (meses === 0 && fechaHoy.getDate() < fechaNacimiento.getDate())){
    edad--;
  }

}

我已经翻译了原始问题的性别和用户类型相关内容的名称。性别为“genero”,用户类型为“tipoUsuario”

你可以忽略“llenartablausuario”函数,它有其他用途

最佳答案

您的问题出在 document.querySelector('input[name="rbtGender"]:checked') 上,当未检查任何内容时,它会返回 null

为了避免差异,您可以这样做 -

sGender = document.querySelector('input[name="rbtGender"]:checked') ?  document.querySelector('input[name="rbtGender"]:checked').value : '';

sUserType = document.querySelector('input[name="rbtUserType"]:checked') ? document.querySelector('input[name="rbtUserType"]:checked').value: '';

如果没有将 '' 分配给 sGendersUserType,我将检查该复选框是否包含任何值。

关于javascript - 如何在 javascript 中获取具有 3 个选项的输入单选按钮的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45900364/

相关文章:

javascript - 使用 angular js 和 $http 请求登录不起作用

javascript - 我尝试 jquery 教程,但它没有给出预期的输出

css - 为什么 'padding' 有时会算在元素宽度内,有时不会?

c++ - 指定查找输入文件的 N 个目录

javascript - Typescript/Angular 中的动态谷歌可视化

javascript - 通过从 XMLHTTPREQUEST 调用将 Windows 服务中的自托管 Web Api 配置为使用 SSL

html - 影响样式的下划线

html - 如何在CSS中的按钮底部设置菜单位置

c - 如何在C中正确输入字符串

javascript - 如何使用momentjs更改时间格式?