2

我在这里和网络上阅读了很多帖子,我什至有关于这个主观的书籍,但我就是无法让它发挥作用。我只是无法让函数获取“RadioDrink”变量的值。我已经尝试了各种组合使用如下所示的 DOM 方法和此处使用集合(this)和(form),但没有运气。任何帮助,将不胜感激。

function ValDrink(form){
if (form.RadioDrink.value == "soup")
    {
    alert("Its soup OK!");
    return true; // OK
     }

======================这是我的代码。======================

<html>
<head>
<title>Test</title>

<script type="text/JavaScript">
<!--
function ValDrink()
{   
    if (document.forms.Drinks.RadioDrink.value == "soup")
    {
      alert("Its soup OK!");
      return true; // soup
    }
    else
    {
      alert("OK");
      return false; // not soup
    }
}
//-->
</script>

</head>

<body>
  <form method="post" id="Drinks" name="Drinks" onsubmit="return ValDrink()">
    <input type="radio" checked name="RadioDrink" value="Tea">Tea<br>
    <input type="radio" name="RadioDrink" value="Coffee">Coffee<br>
    <input type="radio" name="RadioDrink" value="Soup">Soup<br>
    <input type="checkbox" name="CheckMilk" value="Yes">Milk
    <input type="checkbox" name="CheckSugar" value="Yes">Sugar
    <br>
    <input type="submit" name="OKButton" value="Vend">
  </form>
</body>
</html>
4

6 回答 6

0

不是获得收音机价值的正确方法。使用下面的函数,也可以查看这个问题

function ValDrink()
{   
    var radios =document.forms.Drinks.RadioDrink;

    for (var i = 0, length = radios.length; i < length; i++) {
        if (radios[i].checked && radios[i].value==="Soup") {
            alert("Its soup OK!"); // soup
            return true;
        }
    }
    alert("OK");
    return false; // not soup
}
于 2013-01-31T12:13:55.100 回答
0

这将给出“汤”复选框的值:

document.forms["Drinks"]["RadioDrink"][0].checked
于 2013-01-31T12:06:23.557 回答
0

您需要以不同的方式执行此操作。首先,您的 DOM 显示未定义的值。您可以向单选按钮添加不同的 ID。你可以像下面那样做

    <html>
<head>
<title>Test</title>

<script type="text/JavaScript">
<!--
function ValDrink()
{   
    if (document.getElementById("Rsoup").checked == true)
    {
    alert("its soup");
    return true; // soup
    }
    else
    {
    alert("its not soup");
    return false; // not soup
    }
}
//-->
</script>

</head>

<body>
<form method="post" id="Drinks" name="Drinks" onsubmit="return ValDrink()">
<input type="radio" checked name="RadioDrink" value="Tea">Tea<br>
<input type="radio" name="RadioDrink" value="Coffee">Coffee<br>
<input type="radio" name="RadioDrink" id="Rsoup" value="Soup">Soup<br>
<input type="checkbox" name="CheckMilk" value="Yes">Milk
<input type="checkbox" name="CheckSugar" value="Yes">Sugar
<br>
<input type="submit" name="OKButton" value="Vend">
</form>
</body>
</html>
于 2013-01-31T12:06:47.247 回答
0

问题在于:

document.forms.Drinks.RadioDrink

返回对具有该名称的所有三个输入的类似数组的引用,它不返回对当前选定输入的引用。所以你不能只测试value属性。

实现您想要做的最简单的解释方法是为单选按钮提供唯一的 id:

<input type="radio" checked name="RadioDrink" id="RadioDrinkTea" value="Tea">Tea<br>
<input type="radio" name="RadioDrink" id="RadioDrinkCoffee" value="Coffee">Coffee<br>
<input type="radio" name="RadioDrink" id="RadioDrinkSoup" value="Soup">Soup<br>

然后直接选择你要测试的那个:

if (document.getElementById("RadioDrinkSoup").checked) {
    alert("It's soup OK!");
    return true; // soup
} else {
    alert("OK");
    return false; // not soup
}
于 2013-01-31T12:06:56.500 回答
0

试试你的编码如下......它会帮助你......

<html>
<head>
<title>Test</title>

<script type="text/JavaScript">
<!--
function ValDrink() {
    var radios = document.getElementsByName('RadioDrink');
    var radioName;

    for (var i = 0, length = radios.length; i < length; i++) {
        if (radios[i].checked) {
            radioName = radios[i].value;
        }
    }
    if (radioName.toUpperCase() == "soup".toUpperCase())
    {
    alert("Its soup OK!");
    return true; // soup
    }
    else
    {
    alert("OK");
    return false; // not soup
    }
}
//-->
</script>

</head>

<body>
<form method="post" id="Drinks" name="Drinks" onsubmit="return ValDrink()">
<input type="radio" checked name="RadioDrink" value="Tea">Tea<br>
<input type="radio" name="RadioDrink" value="Coffee">Coffee<br>
<input type="radio" name="RadioDrink" value="Soup">Soup<br>
<input type="checkbox" name="CheckMilk" value="Yes">Milk
<input type="checkbox" name="CheckSugar" value="Yes">Sugar
<br>
<input type="submit" name="OKButton" value="Vend">
</form>
于 2013-01-31T12:11:21.827 回答
0

您应该检查无线电组中的每个值并改用它。就像是 :

function getCheckedRadio(radio_group) {
    for (var i = 0; i < radio_group.length; i++) {
        var button = radio_group[i];
        if (button.checked) {
            return button;
        }
    }
    return undefined;
}

调用它以获取选定的值。所以在你的情况下:

getCheckedRadio(document.forms.Drinks.RadioDrink);
于 2013-01-31T12:05:42.163 回答