希望有人可以帮助我。出于某种原因,即使选择了值为'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 "    Route Name:<br>    <input name='new_route_name' size='50' disabled='true' class='input-xlarge'><br><br>";
echo "    Route Grade:<br>    <input type='number' name='route_grade' class='input-mini' disabled='true'><br><br>";
echo "    Route Description <i>(optional)</i>:<br>    <textarea name='route_description' class='input-xxlarge' rows='3' disabled='true'></textarea><br><br>";
使用以下ajax代码填写route_name select:
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;
}
}
感谢您提供的任何帮助。
答案 0 :(得分:3)
我觉得很傻,但我自己解决了。
在收到我的数据的页面中:
if ($route = "m")
而不是:
if ($route === "m")
这是重新分配$ route变量而不是比较它。我发誓我早些时候检查过,但有时很容易错过这样的小事。
感谢所有帮助或查看我问题的人。
答案 1 :(得分:0)
很难说你给的代码。没有&lt; form&gt;您发布的代码中的标记,因此我假设它们包装了第一个代码块。
附加到按钮时的以下代码显示当前选择的选项。 不禁想知道你是如何获得所选择的选项,同样重要的是,你正在做什么。
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中的名称必须包含数组访问运算符[]。 &lt;选项&gt;例如,元素需要以这种方式命名。 我没有理由以这种方式传递单选按钮值,所以如果它们的工作方式相同则不知道 - 或者更具体地说,如果这与您的问题有任何关联。
一个例子:
<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>