Я пытаюсь создать форму, которая будет принимать заданный текст и направить вас к выбранной поисковой системе с текстом в качестве запроса. У меня проблемы с javascript для (re) direct.JavaScript-форму для перенаправления поисковых систем
Что интересно, если вы сделаете ввод ввода кнопкой и сделаете onClick = "searchForm", а затем нажмите на нее, она будет работать. Но тогда вы не можете набирать и просто нажмите enter, чтобы искать .. что мне нужно.
Кроме того, если есть какой-то лучший, но совершенно другой способ сделать это, я бы хотел его услышать.
Спасибо.
EDIT: Полностью изменил код в соответствии с тем, что сказал meouw, что было намного более ясным, чем то, что я изначально имел, поэтому спасибо. Я знаю, что HTML был испорчен, это было главным образом потому, что я менял все вокруг, чтобы попытаться заставить JavaScript работать. Так что даже сейчас, когда я все расчистил, у него все еще есть та же проблема.
Я знаю, что мне что-то не хватает, потому что если вы ставите предупреждение ('cat'); после изменения URL-адреса в JavaScript вы можете увидеть, что браузер был перенаправлен для выполнения поиска, но как только вы нажмете OK на предупреждение, вы получите обратно. Вы даже можете вернуться в историю своего браузера, чтобы перейти на страницу поиска.
EDIT AGAIN: Хорошо, спасибо meouw. Возвращение ложного - это то, что мне нужно было все время. Спасибо за помощь.
FINAL КОД:
<script type="text/javascript">
function doSearch(f) {
var searchTerm = f.searchText.value;
if(!searchTerm) {
//tell user to enter a search string
// cancel the request by returning false
return false;
}
var sel = f.whichEngine;
var selectedEngine = sel[sel.selectedIndex].value;
var engineUrl;
switch(selectedEngine) {
case 'google_web':
engineUrl = 'http://www.google.com/search?q=';
break;
case 'bing_web':
engineUrl = 'http://www.bing.com/search?q=';
break;
case 'yahoo_web':
engineUrl = 'http://search.yahoo.com/search?p=';
break;
case 'google_images':
engineUrl = 'http://www.images.google.com/images?q=';
break;
case 'bing_images':
engineUrl = 'http://www.bing.com/images/search?q=';
break;
case 'yahoo_images':
engineUrl = 'http://images.search.yahoo.com/search/images?p=';
break;
}
engineUrl += searchTerm;
window.location.assign(engineUrl);
return false;
}
</script>
<form onsubmit="return doSearch(this)">
<fieldset>
<legend>Search</legend>
<ul>
<li>
<input type="text" name="searchText" id="searchText" size="41" maxlength="2048" />
</li>
<li>
<select name="whichEngine" id="whichEngine">
<optgroup label="Web">
<option id="GoogleWeb" value="google_web" checked="checked">Google Web</option>
<option id="BingWeb" value="bing_web">Bing Web</option>
<option id="YahooWeb" value="yahoo_web">Yahoo! Web</option>
</optgroup>
<optgroup label="Images">
<option id="GoogleImages" value="google_images">Google Images</option>
<option id="BingImages" value="bing_images">Bing Images</option>
<option id="YahooImages" value="yahoo_images">Yahoo! Images</option>
</optgroup>
</select>
<input type="submit" value="Search">
</li>
</ul>
</fieldset>
</form>
Вы, вероятно, следует начать, запустив валидатор над вашей разметкой - '
Возвратите false в конце doSearch(), чтобы форма никогда не отправлялась – meouw
Я изменил свой ответ, извините – meouw