2016-06-23 5 views
0

Я использую это nice old script, чтобы найти 2 сайта, и он отлично работает, пока я не разместил форму поиска в нескольких местах на одной и той же HTML-странице. Наличие нескольких мест размещения этой формы отменяет все.Mulitple Search Forms With Search Options

Цель состоит в том, чтобы иметь эту форму поиска в 3-4 местах на одной и той же HTML-странице.

HTML FORM

 <form name="searchform" class="top-search-bar-multiple" role="search" onsubmit="return dosearch();"> 
<input type="text" name="searchterms" placeholder="Search our products" /> 
<button type="submit" name="SearchSubmit" class="search-bar--submit icon-fallback-text"> 
    <span class="icon icon-search" aria-hidden="true"></span> 
    <span class="fallback-text">search</span> 
</button> 
<input name="sengines" type="radio" value="http://stackoverflow.com/search?q=" checked/> <small>query 1</small> &nbsp; 
<input name="sengines" type="radio" value="http://stackoverflow.com/search?q=" /> <small>query 2</small> 

JAVASCRIPT

// <![CDATA[ 
function dosearch() { 
    var sf=document.searchform; 
    for (i=sf.sengines.length-1; i > -1; i--) { 
    if (sf.sengines[i].checked) { 
     var submitto = sf.sengines[i].value + escape(sf.searchterms.value); 
    } 
    } 
    window.location.href = submitto; 
    return false; 
} 
// ]]> 
+1

Я хотел бы предположить, если вы именование формы поиска одно и то же каждый раз, то скрипт не знает, какой 'document.searchform' захватить поэтому результат поиска заканчивается порожняком , Всегда ли работает первая поисковая форма, независимо от того, сколько из них последовали? Или все они ломаются, когда их больше одного? – easiestripes

ответ

0

Как уже упоминалось, он просто не знает, какой элемент формы для поиска.

Помимо факта, что для этого кода может потребоваться какой-либо рефакторинг - если все, что вам нужно, просто быстрое и простое решение, просто переместите форму как параметр в onsubmit="return dosearch(currentForm)" и используйте, если впоследствии искать только данную форму. Как это:

http://codepen.io/MattDiMu/pen/PzWYrK

+0

СПАСИБО. Таким образом, было бы невозможно, чтобы все формы могли делиться этим javascript? Так что мне нужен отдельный javascript с каждой формой? – Jay

+0

@Jay Нет, достаточно, чтобы JavaScript был только один раз, поскольку он теперь работает с параметрами, получая щелканную форму в качестве аргумента. Если этот ответ поможет, не стесняйтесь отмечать его как ответ :) – MattDiMu