0

希望有人可以帮助我。出于某种原因,以下表单代码始终将“路线”单选按钮的值设为“m”,即使选择了值为“s”的选项也是如此。

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>";

使用以下 ajax 代码填写 route_name 选择:

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 回答