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

以下のようなコーディングを試してみてください...それはあなたを助けるでしょう.....

<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

これにより、「スープ」チェックボックスの値が得られます。

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

その名前の 3 つの入力すべてへの配列のような参照を返しますが、現在選択されているものへの参照は返しません。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

ラジオグループの各値を確認して、代わりに使用する必要があります。何かのようなもの :

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 に答える
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 に答える