2015-07-15 4 views
2

Нажимая на «пустую корзину?», Я отключаю массив корзин, который отлично работает. Теперь я хотел, чтобы другая форма была скрыта, если нажата кнопка «пустая корзина».jquery - hide not working

HTML:

<form id="f1" action="checkout.php" method="post"> 
    <input name="cust_login" type="submit" value="Continue" /> 
</form>  
<br> 
<button><a href = "cart.php?cmd=emptycart">empty cart?</a></button> 

JavaScript:

<script> 
$(document).ready(function(){ 
    $("button").click(function(){ 
     $("#f1").hide(); 
    }); 
}); 
</script> 

код PHP для незаходимого массива:

if (isset($_GET['cmd']) && $_GET['cmd'] == "emptycart") { 
unset($_SESSION["cart_array"]); 

Но шкура не работает здесь.

Вопрос в том, можем ли мы использовать кнопки и ссылки вместе, как я написал? Если нет, то как его реализовать?

+3

Проблема заключается вы пополняете страницу .. .., который вернет любые изменения, сделанные javacript в на стороне клиента –

+3

Это недопустимо HTML-разметка –

+0

, как это можно решить. – php777

ответ

0
<form id="f1" 
     action="checkout.php" 
     style="<?= (isset($_SESSION['cart_array']) && count($_SESSION['cart_array']))? "display:none;": ""; ?>" 
     method="post"> 
    <input name="cust_login" type="submit" value="Continue" /> 
</form>  
<br> 
<button><a href = "cart.php?cmd=emptycart">empty cart?</a></button> 

Об оказании формы - проверить, если корзина пуста - вынести его на скрытом состоянии

Но в этом случае ваш код JS не имеет никакого смысла. Таким образом, вы можете добавить

<script> 
$(document).ready(function(){ 
    $(document).on('click', "a[href='cart.php?cmd=emptycart']", function(ev){ 
     ev.preventDefault(); 
     $.get($(this).attr('href', function() { 
     $("#f1").hide(); 
     }); 
    }); 
}); 
</script> 

Istead вашего кода JS - это один предотвращения перезагрузки страницы (что происходит при нажатии на ссылку) и отправить запрос с помощью AJAX

+0

Спасибо всем .... – php777

0

Вы можете попробовать

$(document).ready(function(){ 
$("button").click(function(){ 
    $("#f1").attr('style','display: block !important') 
    }); 
}); 

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

+1

Могу ли я спросить, почему вы идете для '.attr ('style', '')', а не '.css ('display', 'block')'? – Mave

+0

Я сильнее. Он будет частью атрибутов html вместо использования jQuery.css, который не будет частью атрибутов. – Dusty

+0

Использование 'css' также добавляет встроенный стиль. Даже тогда 'show()' было бы лучше. –

0

Вы можете попробовать это решение

HTML

<form id="f1" action="checkout.php" method="post"> 
    <input name="cust_login" type="submit" value="Continue" /> 
    </form>  
<br> 
<button>empty cart?</button> 

JS

$(document).ready(function(){ 
    $("button").click(function(){ 
    //$("#f1").hide(); 
    window.location.href = "cart.php?cmd=emptycart"; 
    }); 
}); 
+0

У этого нет никакого смысла - вы скрываете элемент и перезагружаете страницу –

+0

Действительно. Я только что скопировал и отредактировал его код. – Shouvik

1

Попробуйте использовать это:

$(document).ready(function(){ 
    var cmd = '<?php echo $_GET["cmd"] ;?>' ; 
    if(cmd == "emptycart") 
    { 
    $("#f1").hide(); 
    } 
}); 
+1

Спасибо @yatin, это сработало. – php777