Форма поиска, если нет значения перейти на сайт

У меня есть поисковая форма, которую ищут пользователи wikipedia.com. Ничего особенного, форма с входом.

Если ввод пуст, в настоящее время пользователь перенаправлен сюда: http://en.wikipedia.org/w/index.php?title=Special%3ASearch&redirs=1&search=&fulltext=Search&ns0=1 .

Я хотел бы перенаправить пользователей здесь: www.wikipedia.com вместо

Как я могу это сделать?

Это моя форма поиска:

<form method="get" action="http://en.wikipedia.org/w/index.php">
    <input type="hidden" value="Special:Search" name="title"/>        
    <input type="hidden" value="1" name="redirs"/>
    <input type="text" name="search">
    <input type="hidden" value="Search" name="fulltext"/>
    <input type="hidden" value="1" name="ns0"/>
</form>

html,search,redirect,

0

Ответов: 1


1 принят

Я думаю, это невозможно без использования JavaScript; если, как вы указали, вы готовы использовать jQuery:

$('form').submit(
    function(){
        if ($(this).find('input:text').val() == ''){
            $(this).attr('action','http://www.wikipedia.com/');
        }
        else {
            $(this).submit();
        }
    });

JS Fiddle demo .

В обычном JavaScript, кажется, работает следующее (протестировано в Chromium 12 и Firefox 7 в Ubuntu 11.04):

var formEl = document.getElementsByTagName('form')[0];
var inputs = formEl.getElementsByTagName('input');
var textInputEl = [];
for(i in inputs){
    if (inputs[i].type == 'text'){
        textInputEl.push(inputs[i]);
    }
}

formEl.onsubmit = function(){
    if (textInputEl.value === '' || textInputEl.value === null){
        this.action = 'http://www.wikipedia.com/';
    }
    else {
        formEl.submit;
    }
};

JS Fiddle demo .


Я пытаюсь настроить это так, чтобы при пустом вводе текста форма удаляла все hiddenэлементы и затем устанавливала action, или, document.locationчтобы быть http://en.wikipedia.org/wiki/Special:Random. По какой-то причине это, похоже, не работает. Как будто Википедия находит что-то не так и перенаправляет на другую страницу. Аргй. В любом случае, это то, что я пытался :

 $('form').submit(
    function(){
        if ($(this).find('input:text').val() == ''){
            $(this).find('input:hidden').remove();
            $(this).attr('action','http://en.wikipedia.org/wiki/Special:Random');
        }
        else {
            $(this).submit();
        }
    });

JS Fiddle demo ;

 $('form').submit(
    function(){
        if ($(this).find('input:text').val() == ''){
            $(this).find('input:hidden').remove();
            document.location.href = 'http://en.wikipedia.org/wiki/Special:Random';
            /*
                I also tried 'document.location','window.location' 
                and 'window.location.href' all of which, predictably,
                failed in exactly the same way.
            */
        }
        else {
            $(this).submit();
        }
    });

JS Fiddle demo ;

HTML, поиск, перенаправление,
Похожие вопросы