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>