2013-01-31 277 views
2

我已经阅读了大量的帖子和网络,我甚至有书籍涵盖了这种主观性,但我无法完成它的工作。我无法让函数获取“RadioDrink”变量的值。我尝试了各种各样的组合使用DOM方法,如下面和这里使用集合(这)和(表单),没有运气。 任何帮助,将不胜感激。将表单值传递给JavaScript函数

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> 
+0

“汤”!=“汤” – w35l3y

回答

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); 
0

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

document.forms["Drinks"]["RadioDrink"][0].checked 
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> 
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 
} 
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> 
0

不是正确的方式来获得无线电val UE。使用以下功能,也可以查询this question

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 
}