我有一个正在处理会话的电子商务网站,当两个会话之一为空时,我需要防止默认的a标记上的href缺省。我设法做到了,但只会在我仅将1个元素添加到有问题的会话中时才会失败。要澄清的是,如果我在“购物车”中仅添加1个元素,它仍会阻止默认设置,但是如果我添加2个或更多元素,或以任何方式或数字将其删除,则仅当购物车为空时,它才能正常工作。
当我的网站刷新页面以将数据提交到购物车会话时,我创建了一个名为data的变量,如果会话不为空,则为“ 1”,如果会话为空,则为“ 2”,然后我回显该变量在具有id数据的隐藏输入上,并使用jquery检查元素数据的值,并在与2不同时防止默认值。
//在这里我定义变量数据//
<?php
if(!isset($_SESSION_["shopping_cart"])){
$data = "1";
}else{
$data = "2";
}
?>
//这是我的主播//
<li><a id="checkout" href="/bubale/checkout.php"
onclick="check();">CHECKOUT</a></li>
///在这里,我将$ data插入到隐藏的输入中//
<input type="hidden" id="data" value="<?php echo $data; ?>">
//如果我的脚本//
<script type="text/javascript">
$( "#checkout" ).click(function( event ) {
if ($('#data').val() != "2") {
event.preventDefault();
alert("Seu carrinho de compras esta vacio");
}
});
</script>
由于某些原因,它应该可以正常工作,但是添加到购物车中的第一个元素仍然可以防止默认设置,我猜是$ data由于某些原因没有变化。
任何帮助都将得到帮助,即使您有其他方式可以做到,我也很乐意收到对此的反馈...
答案 0 :(得分:1)
该功能可能在文档准备好之前就已执行。尝试像这样使用document.ready函数:
$( document ).ready(function() {
$( "#checkout" ).click(function( event ) {
if ($('#data').val() != "2") {
event.preventDefault();
alert("Seu carrinho de compras esta vacio");
}
});
});