对锚随机运行的preventdefault()函数

时间:2019-05-07 06:08:52

标签: javascript php jquery

我有一个正在处理会话的电子商务网站,当两个会话之一为空时,我需要防止默认的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由于某些原因没有变化。

任何帮助都将得到帮助,即使您有其他方式可以做到,我也很乐意收到对此的反馈...

1 个答案:

答案 0 :(得分:1)

该功能可能在文档准备好之前就已执行。尝试像这样使用document.ready函数:

$( document ).ready(function() {
    $( "#checkout" ).click(function( event ) {
    if ($('#data').val() != "2") {
   event.preventDefault();
   alert("Seu carrinho de compras esta vacio");
}

    });
});