2014-02-14 2 views
0

У меня есть эта небольшая форма, которая работает как фильтр. Все, что я хочу, - это отправить значения в URL-адрес и активировать активную кнопку value. Форма работаетPHP HTML JQUERY Сменить класс кнопки ввода

<form id="filter" method="get" action=""> 
<label>View: 
<input type="submit" id="men" class="active" name="men" value="men" /> 
<input type="submit" id="women" class="normal" name="women" value="women" /> 
</label> 
</Form> 

Но когда дело доходит до изменения классов, он не работает Есть 2 класса (нормальный = нормальный, активный = подсвечена)

$('#men').click(function() { 
     $('#women').removeClass('active'); 
     $('#women').addClass('normal'); 
     $(this).removeClass('normal'); 
     $(this).addClass('active'); 
return false; 
}); 

$('#women').click(function() { 
     $('#men').removeClass('active'); 
     $('#men').addClass('normal'); 
     $(this).removeClass('normal'); 
     $(this).addClass('active'); 
return false; 
}); 

Без Jquery, изменения кнопки щелчка URL

С JQUERY - Google работает, но он не изменяется URL Как это можно решить? Спасибо!

+0

Можете ли вы разместить JSFiddle для этого? С CSS слишком –

+0

http://jsfiddle.net/acT9G/ – MamaWalter

+0

Можете ли вы проверить, что прослушиватели событий на самом деле вызываются, помещая в них предупреждение ('click') или console.log ('click')? Возможно ли, что на странице есть другие объекты с идентификатором «мужчины» или «женщины»? – bwroga

ответ

0

Не уверен, что вы пытаетесь достичь, но эта работа:

$('#men').click(function(evt) { 
    evt.preventDefault(); 
    if($(this).hasClass('normal')){ 
     $(this).toggleClass('normal active'); 
     $('#women').toggleClass('normal active'); 
    } 
}); 

$('#women').click(function(evt) { 
     evt.preventDefault(); // this will prevent submitting your form 
    if($(this).hasClass('normal')){ 
     $('#men').toggleClass('normal active'); 
     $(this).toggleClass('normal active'); 
    } 
}); 

FIDDLE


EDIT: может быть, я ошибаюсь, но на основе вашего комментария вы, кажется, необходимо перезагрузить страницу, чтобы получить результат отправки формы. Так почему бы не сделать свой class переключатель в PHP?

<?php 
    $menBtnClass = 'normal'; 
    $womenBtnClass = 'normal'; 

    if(isset($_GET['men']) && $_GET['men'] === 'men') $menBtnClass = 'active'; 
    if(isset($_GET['women']) && $_GET['women'] === 'women') $womenBtnClass = 'active'; 
?> 
<form id="filter" method="get" action=""> 
    <label>View: 
    <input type="submit" id="men" class="<?php echo $menBtnClass; ?>" name="men" value="men" /> 
    <input type="submit" id="women" class="<?php echo $womenBtnClass; ?>" name="women" value="women" /> 
    </label> 
</form> 
+0

Работа в Google работает с изменением классов. Но он больше не меняет значение $ GET – kaulainais

+0

ОК, вы должны отредактировать свой вопрос и добавить свой PHP-код. Я думаю, что вам не нужен javascript для вашей попытки достичь. Просто проверьте значение '$ _GET' и добавьте' class' в PHP. – MamaWalter

+0

Я сделал это. С PHP. Правильно, нет необходимости в javascript – kaulainais

0

Попробуйте это.

$('#men').click(function() { 
     $(this).toggleClass('normal active'); 
     $('#women').toggleClass('normal active'); 

return false; 
}); 

$('#women').click(function() { 
     $('#men').toggleClass('normal active'); 
     $(this).toggleClass('normal active'); 
return false; 
}); 

toggleClass является наиболее эффективным https://api.jquery.com/toggleClass/

0

Что не работает?

Вот скрипка http://jsfiddle.net/X8EqK/

Кажется, работает для меня

$('#men').click(function() { 
     $('#women').removeClass('active'); 
     $('#women').addClass('normal'); 
     $(this).removeClass('normal'); 
     $(this).addClass('active'); 
     return false; 
}); 

$('#women').click(function() { 
     $('#men').removeClass('active'); 
     $('#men').addClass('normal'); 
     $(this).removeClass('normal'); 
     $(this).addClass('active'); 
     return false; 
}); 
0

Что случилось? Он работает в моем тесте: fiddle

$('#men').click(function() { 
    $('#women').removeClass('active').addClass('normal'); 
    $(this).removeClass('normal').addClass('active'); 
    return false; 
}); 

$('#women').click(function() { 
    $('#men').removeClass('active').addClass('normal'); 
    $(this).removeClass('normal').addClass('active'); 
    return false; 
}); 
0

JSFiddle работает хорошо здесь. Я немного подтолкнул код.

$(function() { 

    $('#men').click(function(e) { 
     e.preventDefault(); 
     $('#women').removeClass('active').addClass('normal'); 
     $(this).removeClass('normal').addClass('active'); 
    }); 

    $('#women').click(function(e) { 
     e.preventDefault(); 
     $('#men').removeClass('active').addClass('normal'); 
     $(this).removeClass('normal').addClass('active'); 
    }); 

}); 
Смежные вопросы