Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/90.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 检查单选按钮是否被选中,是否不工作_Javascript_Html_Forms - Fatal编程技术网

Javascript 检查单选按钮是否被选中,是否不工作

Javascript 检查单选按钮是否被选中,是否不工作,javascript,html,forms,Javascript,Html,Forms,当我选中一个单选按钮时,它返回false选项,并且它应该返回值 <form name="formulario" action="accion.php" method="post"> <input type="radio" name="opcion" value="1">Opcion 1 <input type="radio" name="opcion" value="2">Opcion 2 <input type="button"

当我选中一个单选按钮时,它返回false选项,并且它应该返回值

<form name="formulario" action="accion.php" method="post">
    <input type="radio" name="opcion" value="1">Opcion 1
    <input type="radio" name="opcion" value="2">Opcion 2
    <input type="button" name="Enviar" value='eviar' onclick="enviar();">
</form>
<script>
function enviar(){
    var di = document.getElementsByName('opcion');
    for(i=0; i <di.length; i++){
        if(di[i].checked==true){
            valorSeleccionado = di[i].value;
            alert(valorSeleccionado);
        }
        if(di[i].checked==false){
            alert('you didn´t choose a option');
        }
    }
}
</script>

Opcion 1
Opcion 2
函数enviar(){
var di=document.getElementsByName('opcion');

对于(i=0;i要知道选择了哪个收音机,您应该检查“opcion”元素的值。我认为checked属性不适用于收音机,只适用于复选框。

请尝试以下方法:

function enviar() {
    var di = document.getElementsByName('opcion');
    var valid = false;
    for (i = 0; i < di.length; i++) {
        if (di[i].checked == true && !valid) {
            valorSeleccionado = di[i].value;
            valid = true;
            alert(valorSeleccionado);
        }
    }
    if (!valid) {
        alert('you didn´t choose a option');
    }
}
函数enviar(){
var di=document.getElementsByName('opcion');
var-valid=false;
对于(i=0;i


它只是通过单选按钮运行并检查是否选中了一个。如果选中,则设置一个标志并警告值,如果没有,则警告错误。

您应该将JS函数放在html之前。 另外,你的核实也不是很准确

这是您更正的代码:

<script type="text>
function enviar(){
    var valorSeleccionado = '';
    var di = document.getElementsByName('opcion');
    for(i=0; i <di.length; i++){
        if(di[i].checked==true) {
            valorSeleccionado = di[i].value;
        }
        if(valorSeleccionado) {
            alert(valorSeleccionado);
        } else {
            alert("you didn't choose an option");
        }
        }
}
</script>

<form>
    <input type="radio" name="opcion" value="1" />Opcion 1
    <input type="radio" name="opcion" value="2" />Opcion 2

    <input type="button" value="eviar" onclick="enviar();" />
</form>

到底应该发生什么?返回什么?请以可读的方式缩进代码。如果我选中一个选项,它将返回“您没有选择选项”,它应该会回来valorSeleccionado@jarab,选中适用于单选按钮它应该同时执行这两项操作。如果您有两个单选按钮并在这两个按钮上循环,则未选中的按钮将运行第二个警报,选中的按钮将运行第一个警报。我在a中进行了测试,它确实做到了这一点。
checked
适用于单选按钮,但吨…
所选的
用于
菜单。另一个问题是名称属性应该是唯一的……并且您有两个name='opcion'输入元素。@rnirnber:不正确。无线电组要求名称相同。ID必须是唯一的。也许是这样,但有更好的方法可以做到这一点。特别是当您使用javascript.IE7的JS引擎时's document.getElementById选择器中实际上有一个错误,它错误地返回传递给getElementById方法的name属性的元素。我刚刚用chrome开发工具测试了代码,cheked prop对radios运行良好!!?为什么函数存在于何处很重要,只要在它引用的元素之前没有调用它是否存在?函数是否在HTML之前或之后并不重要。当用户单击按钮时,函数将被定义。此外,这并不能真正解决双重警报问题。如果用户检查第一个警报,他们将得到两个警报,其值为收音机。如果他们检查第二个警报,他们将得到“选择一个选项”警报消息,然后是一个带有值的警报。如果您的连接非常滞后,这可能很重要,对吗?