Mod重写重定向到基本链接时,href="hashtag"


mod rewrite redirects to base link when href="hashtag"

我有链接

<a href='#' class='changer text-primary'><i class='fa fa-pencil-square-o '></i></a>

使用javascript内联编辑产品数量的值。它曾经工作得很好,直到我在我的应用程序内实现mod重定向。我添加了基础链接:<base href="http://127.0.0.1/MyApp/">现在,当我点击这个链接时,我被重定向到http://127.0.0.1/MyApp/index.php,而不是停留在同一个页面,并通过jquery切换显示更新的形式。

这是更新表单:

<form class="update-quantity-form" style="display: none">
   <div class="input-group updater">
      <input name="quantity" value="<?= $saved_cart_items[$id_product]['quantity']?>" min="1" class="form-control" required="" type="number">
       <span class="input-group-btn">
           <button type="submit" class="btn btn-default update-quantity">Update</button>
       </span>
    </div>
</form>

这是相对于这个文件的htaccess的内容:

Options +FollowSymlinks
RewriteEngine on
RewriteRule    ^MyCart/?$  cart.php [NC,L]

这是被忽略的切换动画的javascript代码:

$('.changer').on('click', function () {
   $('.update-quantity-form').toggle('fast');
});

这个问题与mod_rewrite, .htaccess甚至你的html本身都没有关系。

问题是,当不需要导航时,你的javascript事件处理程序没有正确地取消导航。即使没有<base ...>的问题,在所有浏览器中,url后面也会出现一个标签,在一些浏览器中,焦点会出现在屏幕的顶部。

相反,使用下面的javascript来取消导航事件:

$('.changer').on( 'click', function( event ) {
  event.preventDefault();
  $('.update-quantity-form').toggle('fast');
} );

有关更多信息,请参阅mdn上的click事件,这是一个MouseEvent,这是一个UIEvent,这是一个事件,它实现了Event.preventDefault()