HTML: target = «_ blank» для выпадающего списка

Problem: открыть новое окно с опцией выбора

<form onsubmit="return handleSubmit()" target="_blank" method="get" name="moduleForm" id="moduleForm">
<font size=2 face = verdana color= #0000ff ><b>Search</b></font>

    <select name="allSelect" id="allSelect">
    <optgroup label="Historical">
    <option value="http://www.something.com/cse?cx=0000000000000&sa=Search&q=">Open in a new window 1</option>
    <option value="http://www.google.com/cse?cx=0000000000000000A-cmjrngmyku&ie=UTF-8&sa=Search&q=">Open in a new window 2</option>
    </optgroup>
    </select>

<input type="text" name="allQuery" id="allQuery" size="22" />
<input type="submit" value=" Go " />

Question: Как я могу открыть содержимое в новом окне с помощью переключателя?

 Martin K.12 июл. 2009 г., 23:35
_gel (id): Обертка вокруг функции JavaScript document.getElementById () из гаджетов Google. moduleForm - это только имя & lt; формы & gt; элемент. Чтобы найти правильную & lt; форму & gt ;, getElementById является udes.
 Gumbo12 июл. 2009 г., 16:38
Что значитhandleSubmit() делать?
 Léo Léopold Hertz 준영12 июл. 2009 г., 16:54
Гамбо: Пожалуйста, посмотрите пример здесь:savedbythegoog.appspot.com/….
 Martin K.13 июл. 2009 г., 16:12
@SimpleThings: Это был мой ответ на другой вопрос, который вы открыли (был удален)
 Léo Léopold Hertz 준영12 июл. 2009 г., 23:52
@ Мартин К .: Очень интересная вещь. Вы имеете в виду & quot; Unix Desktop Environments & quot; в предложении & quot; Чтобы найти правильную & lt; форму & gt ;, getElementById - это udes. & Quot ;? Я не вижу отношения к теме, интересно ...

Ответы на вопрос(4)

<select name="allSelect" id="allSelect">
<optgroup label="Historical">
<option value="http://www.something.com/cse?cx=0000000000000&sa=Search&q=">Open in a new window 1</option>
<option value="http://www.google.com/cse?cx=0000000000000000A-cmjrngmyku&ie=UTF-8&sa=Search&q=">Open in a new window 2</option>
</optgroup>
</select>

<input type="button" 
    value="open in a new window" 
    onclick="window.open(document.getElementById(allSelect).value);" />
Решение Вопроса

вашhandleSubmit function следующее:

function handleSubmit()
{
    var form = _gel("moduleForm"),
        elm = _gel("allQuery"),
        selectElm = _gel("allSelect");
    if (elm != "" && selectElm != "") {
        var query = elm.value;
        var searchUrl = selectElm.value;
        if (query != "" && searchUrl != "") {
            searchUrl += escape(query);
            window.open(searchUrl, form.target || "_blank");
        }
    }
    return false;
}
 Léo Léopold Hertz 준영12 июл. 2009 г., 23:10
Как вы узнали о деталях "form = _gel (" ModuleForm ");" и 'form.target || & Quot; _blank & Quot;) & APOS ;? Я не могу даже гуглить их.
 12 июл. 2009 г., 23:44
Стартовый тег формы отсутствует в этом примере документа. Но это в примере кода в вашем вопросе.
 Léo Léopold Hertz 준영12 июл. 2009 г., 23:35
Не могли бы вы уточнить предложение "Это просто имя / идентификатор формы" в вашем примере кода? & Quot ;? Я не могу найти его из исходного кода.
 Léo Léopold Hertz 준영12 июл. 2009 г., 23:13
Большое спасибо за решение проблемы. Извините за прямолинейность, но как вы узнали о модульной форме? Это меня удивляет. Надеюсь, что будет так же хорошо, как вы когда-нибудь. Еще раз спасибо.
 12 июл. 2009 г., 23:23
Это просто имя / идентификатор формы в вашем примере кода. И после_gel() функция также используется для поля вводаallQuery и выберите полеallSelectЯ предположил, что эта функция использует это значение в качестве имени или идентификатора. А такжеform.target || "_blank" это просто выражение ИЛИ, которое возвращает значение первого чередования, которое может быть оценено какtrue, Так что еслиform.target будет неопределенным,"_blank" будет использоваться в качестве значения по умолчанию.

что ваша страница должна быть пригодна для использования без использования сценариев, поэтому я предлагаю реализовать резервный механизм: форма должна вызывать сценарий на стороне сервера, который отвечает30x статус иLocation заголовок.

Клиентская сторона будет выглядеть так:

<form action="path-to-redirection-script" method="GET" target="_blank"
 onsubmit="window.open(this.elements['foo'].value); return false;">
 <select name="foo" size="1">
  <option value="http://google.com">google</option>
 </select>
 <input type="submit" value="go">
</form>

Кроме того, помните, чтоtarget="_blank" / window.open() часто злой.

 Léo Léopold Hertz 준영13 июл. 2009 г., 21:18
+1 хорошие очки!
 Léo Léopold Hertz 준영14 июл. 2009 г., 00:09
Решение моего вопроса в этом комментарии, кажется, здесь:stackoverflow.com/questions/121203/…
 Léo Léopold Hertz 준영14 июл. 2009 г., 01:15
Я открыл новый вопрос здесь:stackoverflow.com/questions/1122609/…
 Léo Léopold Hertz 준영13 июл. 2009 г., 23:49
Можете ли вы сделать так, чтобы серверный скрипт запускался тогда и только тогда, когда у пользователя отключен JS? Если я правильно понимаю, сценарий всегда будет выбираться один раз за посещение.

window.open функция.

Ваш ответ на вопрос