Я думаю, это невозможно без использования 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 ;