POST后不会出现警报

时间:2014-05-30 21:41:45

标签: javascript php jquery html

当选择菜单中有“请选择你的国家/地区”并点击结帐按钮时,我会收到提醒,但是当我选择加拿大时,然后再选择“请选择您的国家/地区”并按结帐我不知道得到任何警报。如果选择菜单中有“请选择您的国家/地区”并且用户按下结帐,我希望警报始终显示。

JQuery的:

      jQuery(function($){
        $('#checkForm').submit(function() {
          var checkShipping = $("#shipping").val();
          if(checkShipping == 'none'){
            alert('Please select a shipping option before proceeding');
            return false;
          }
        });
    });

HTML部分:

echo "<form id='checkForm' method='post' action='checkout.php'>\n";
echo "<select id='shipping' name='shipping'>\n";
echo "<option id='none' value='none'" . ($this->shippingarea == 'none' ? ' selected="selected"':'') . ">Please select your country</option>\n";
echo "<option id='1' value='1'" . ($this->shippingarea == 1 ? ' selected="selected"':'') . ">United States</option>\n";
echo "<option id='2' value='2'" . ($this->shippingarea == 2 ? ' selected="selected"':'') . ">Canada</option>\n";
echo "</select>\n";
echo "<input type='submit' value='Update' />\n";
echo "</form>\n";

演示:(您必须先在购物车中添加商品) here

我的PHP代码: link

1 个答案:

答案 0 :(得分:3)

问题是jcart.js中的AJAX success函数包含:

container.html(response);

这取代了jcart DIV中的所有元素。因此,$("#checkForm").submit()绑定将丢失,因为绑定的元素已被替换。您需要使用事件委派:

$("#jcart").on("submit", "#checkForm", function() {
    ...
});

由于你使用的jQuery版本早于on(),你必须使用delegate,它以不同的顺序获取其参数:

$("#jcart").delegate("#checkForm", "submit", function() {
    ...
});