我有一个javascript,它可以获取我的服务器上另一个网页的内容。但它只适用于函数onchange,所以只有当我选择一个选项int时,它才会下拉我的javascript。
但我希望使用提交按钮使其工作。
当单击submit按钮时,会执行与dropdown现在执行的操作相同的操作。我做不到这个。
有什么建议吗?
<html>
<head>
<script type="text/javascript">
function showUser(str)
{
if (str=="")
{
document.getElementById("txtHint").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()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
//document.getElementById("txtHint").innerHTML=xmlhttp.responseText;
alert("testing");
}
}
xmlhttp.open("GET","querie.php");
xmlhttp.send();
}
</script>
</head>
<body>
<form>
<select name="users" onchange="showUser(this.value)">
<option value="">Select a person:</option>
<option value="1">Peter Griffin</option>
<option value="2">Lois Griffin</option>
<option value="3">Glenn Quagmire</option>
<option value="4">Joseph Swanson</option>
</select>
</form>
<form id="game" action="" onsubmit="return showUser(this.value)" method="post">
<input type=submit value=Send />
</form>
<br />
<div id="txtHint"><b>Person info will be listed here.</b></div>
</body>
</html>
发布于 2011-07-26 01:19:43
<form id="game" action="" onsubmit="return showUser(**this.value**)" method="post">
您有两个不同的表单。列表在第一个表单中,您的按钮在第二个表单中。在第二个表单中,this.value在开始的表单标记中没有值,因为表单标记不是输入。
试试这个:
<form id="game" action="" onsubmit="return showUser(document.name_of_form1.users.options[document.name_of_form1.users.selectedIndex].value)" method="post">
发布于 2011-07-26 01:19:45
this.value
依赖于上下文。它在<select>
元素的属性中起作用,但在形式完全不同的<form>
元素中具有不同的含义。如果不是2个表单,只需要1个表单,这样的东西应该可以工作。另外,
<form method="post"
onsubmit="var users=document.getElementById('users'); showUser(users[users.selectedIndex].value); return true;">
<select id="users" name="users" onchange="showUser(this.value);">
<option value="">Select a person:</option>
<option value="1">Peter Griffin</option>
<option value="2">Lois Griffin</option>
<option value="3">Glenn Quagmire</option>
<option value="4">Joseph Swanson</option>
</select>
<input type="submit" value="Send" />
</form>
更新:
你的评论表明你实际上根本不需要下拉菜单。从问题中看,这一点并不清楚。在任何情况下,这都大大简化了HTML和javascript。尝试类似下面的代码。注意:onsubmit
处理程序返回false
,以防止表单提交实际加载新页面。
<html>
<head>
<script type="text/javascript">
function showUser() {
var xmlhttp = null;
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() {
if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
document.getElementById('txtHint').innerHTML = xmlhttp.responseText;
}
}
xmlhttp.open('GET', 'querie.php');
xmlhttp.send();
}
</script>
</head>
<body>
<form onsubmit="showUser(); return false;" method="post">
<input type="submit" value="Send" />
</form>
<br />
<div id="txtHint"><b>Person info will be listed here.</b></div>
</body>
</html>
发布于 2011-07-26 01:20:37
删除submit按钮周围的form
标记。在第一个/原始表单标签上,添加`onsubmit="showUser(names.value)“
https://stackoverflow.com/questions/6819877
复制相似问题