我遇到表单问题,并在该表单中使用onchange进行选择。当我在2选择之前启动表单时,它运行得非常好,但是当我将表单移到表外时(包括所有内容),onchange将无法正常工作。关于为什么的任何想法?
这是我的表格:
<table border="0" class="signUp">
<tr><td align="center" class= "signUpfont"> Sign up for FREE </td></tr>
<tr><td><input type="text" text="First Name" class='signUpinput' id="fname" name="fname" placeholder="First Name" /></td></tr>
<tr><td><input type="text" class='signUpinput' id="lname" name="lname" placeholder="Last Name"/></td></tr>
<tr><td><input type="text" class='signUpinput' id="email" name="email" placeholder="Email"/></td></tr>
<tr><td><input type="text" class='signUpinput' id="email2" name="email2" placeholder="Re-enter Email"/></td></tr>
<tr><td><input type="password" class='signUpinput' id="pass" name="pass" placeholder="Password"/></td></tr>
<tr><td><form name="form1" action="submit.php" method='POST'>
<select name="country" onchange="window.getSchools()" style="color: white; background-color: #2B4478;">
<option value="0">Select State</option>
<option value="louisiana">Louisiana</option>
<option value="texas">Texas</option>
<option value="alabama">Alabama</option>
<option value="mississippi">Mississippi</option>
</select>
<br>
<select name="school" style="color: white;background-color: #2B4478;">
<option value="">Select School</option>
</select></td></tr>
<tr><td><input type="submit" name="submit" value="Sign Up" style="color:white; background-color:#2B4478; width: 100px;margin-left: 52px;"></td></tr>
</form>
</table>
这是我的onchange函数:
<script type="text/javascript">
function getSchools()
{
var xmlhttp;
try{
xmlhttp = new XMLHttpRequest;
}catch(e)
{
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
if(xmlhttp)
{
var form = document['form1'];
var country = form['country'].value;
xmlhttp.open("GET", "getSchools.php?country="+country, true);
xmlhttp.onreadystatechange = function ()
{
if(this.readyState == 4)
{
var s = document.createElement('select');
s.name = "school";
s.style.color = "white";
s.style.background = "#2b4478";
s.innerHTML = this.responseText;
if(form['school'])
{
form.replaceChild(s, form['school']);
}else
form.insertBefore(s, form['submit']);
}
}
xmlhttp.send(null)
}
}
答案 0 :(得分:0)
您的活动未被解雇,因为您没有明确定义'window.getSchools'。所以你有两个选择。
修复onchange内联处理程序:
<select name="country" onchange="getSchools()">
<option value="0">Select State</option>
<option value="louisiana">Louisiana</option>
<option value="texas">Texas</option>
<option value="alabama">Alabama</option>
<option value="mississippi">Mississippi</option>
</select>
定义您的活动:
getSchools = function()
{
//put your code here
alert("fired");
}
保持相同的HTML:
<select name="country" onchange="window.getSchools()">
<option value="0">Select State</option>
<option value="louisiana">Louisiana</option>
<option value="texas">Texas</option>
<option value="alabama">Alabama</option>
<option value="mississippi">Mississippi</option>
</select>
修复您的事件处理程序:
window.getSchools = function()
{
//put your code here
alert("fired");
}
您可以查看官方文档here
您也有格式错误的HTML。在关闭元素之前关闭元素。有关工作示例,请参阅此jsFiddle。
我肯定建议通过JavaScript documentation,开始时可能看起来很乏味,但是当我说它会在调试和故障排除方面为你节省很多时间时相信我:)