0

誰かがこれで私を助けてくれることを願っています。何らかの理由で、値が「s」のオプションが選択されている場合でも、次のフォーム コードでは常に「route」ラジオ ボタンの値が「m」になります。

echo "<b><u>Route Information</u></b><br><br>";

echo "Select Route Name: <input type='radio' name='route' id='route1' value='s' onclick='switchRoute();' CHECKED><br>";
echo "<div id='txtLocation'><select name='route_name' id='route_name'>
    <option value='0000'>... select a location ...</option>";
echo "</select></div><br><br>";

echo "Or enter a new route (select the radio button for this option):<input type='radio' name='route' id='route2' value='m' onclick='switchRoute();'><br>";
echo "&nbsp&nbsp&nbsp&nbspRoute Name:<br>&nbsp&nbsp&nbsp&nbsp<input name='new_route_name' size='50' disabled='true' class='input-xlarge'><br><br>";
echo "&nbsp&nbsp&nbsp&nbspRoute Grade:<br>&nbsp&nbsp&nbsp&nbsp<input type='number' name='route_grade'  class='input-mini' disabled='true'><br><br>";
echo "&nbsp&nbsp&nbsp&nbspRoute Description <i>(optional)</i>:<br>&nbsp&nbsp&nbsp&nbsp<textarea name='route_description' class='input-xxlarge' rows='3' disabled='true'></textarea><br><br>";

route_name select は、次の ajax コードで埋められます。

function showUser(str)
{
    if (str=="")
      {
      document.getElementById("txtLocation").innerHTML="";
      return;
      } 
    if (window.XMLHttpRequest)
      {// code for IE7+, Firefox, Chrome, Opera, Safari
      xmlhttp=new XMLHttpRequest();
      }
    else
      {// code for IE6, IE5
      xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
      }
      xmlhttp.onreadystatechange=function()
      {
      var output = '';
      if (xmlhttp.readyState==4 && xmlhttp.status==200)
        {
        output = xmlhttp.responseText;
        document.getElementById("txtLocation").innerHTML=output;
        }
      }
    xmlhttp.open("GET","../model/selected_loc.php?l="+str,true);
    xmlhttp.send();
}

これは、次の PHP コードによって呼び出されます。

echo "<b><u>Location Information</u></b><br><br>";
echo "<select name='loc_id' id='loc_id' onchange='showUser(this.value)'><option value='0000'>... select a location ...</option>";
$result = mysql_query("SELECT loc_id, name FROM location ORDER BY name");

while ($row = mysql_fetch_array($result))
{
    $id = $row['loc_id'];
    $name = $row['name'];
    echo "<option value='{$id}'>{$name}</option>";
}
echo "</select><br><br>";

フォームで動作するこの JavaScript コードもあります。

function switchRoute()
{
    if (document.getElementById('route2').checked)
    {
        document.submitroute.route_name.disabled=true;
        document.submitroute.new_route_name.disabled=false;
        document.submitroute.route_grade.disabled=false;
        document.submitroute.route_description.disabled=false;

    }
    else if (document.getElementById('route1').checked)
    {
        document.submitroute.route_name.disabled=false;
        document.submitroute.new_route_name.disabled=true;
        document.submitroute.route_grade.disabled=true;
        document.submitroute.route_description.disabled=true;
    }
}

あなたが私に与えることができるどんな助けにも感謝します.

4

2 に答える 2

3

私はかなりばかげているように感じますが、私はそれを自分で解決しました。

私が持っていたデータを受け取ったページで:

if ($route = "m")

それ以外の:

if ($route === "m")

これは、変数を比較する代わりに、$route 変数を再割り当てしていました。先に確認したことを誓いますが、そのような小さなことは簡単に見逃されることがあります.

私の質問を手伝ってくれた、または見てくれたすべての人に感謝します。

于 2012-11-04T03:08:41.183 に答える
0

あなたが与えたコードで言うのは難しいです。投稿したコードには<form>タグがないため、最初のコードブロックをラップしていると思います。

次のコードをボタンに接続すると、現在選択されているオプションが表示されます。選択したオプションをどのように取得しているのか、そして同様に重要なこととして、それを使って何をしているのか疑問に思わずにはいられません。

JS:

function showCurrent(inputName)
{
    var inputList = document.getElementsByTagName('input');
    var numRadios = 0, i, n = inputList.length;
    var value = null;

    for (i=0; i<n; i++)
    {
        if ( (inputList[i].getAttribute('type') == 'radio') && (inputList[i].getAttribute('name') == inputName) )
        {
            numRadios++;
            if (inputList[i].checked)
                value = inputList[i].getAttribute('value');
        }
    }
    alert("Num radios in the '"+ inputName + "' group: " + numRadios + ", value=" + value);
}

HTML:

<input type='button' value='getCurValue' onclick='showCurrent("route");'/>

FWIW:フォームの送信時にphpにいくつかのものを渡すには、htmlコード内の要素に名前を付けるトリックが必要です。つまり、htmlの名前には、配列アクセス演算子[]を含める必要があります。たとえば、<option>要素にはこの方法で名前を付ける必要があります。私はこの方法でラジオボタンの値を渡す理由がなかったので、それらが同じように機能するかどうか、より具体的には、これがあなたの質問に関連があるかどうかはわかりません。

例:

<form action='testCombo.php'>
        <select name='test[]' multiple='multiple'>
            <option value='1'>a</option>
            <option value='2'>b</option>
            <option value='3'>c</option>
            <option value='4'>d</option>
        </select>
        <input type='submit' value='submit'/>
    </form>
于 2012-11-04T01:59:34.167 に答える