当选择菜单中有“请选择你的国家/地区”并点击结帐按钮时,我会收到提醒,但是当我选择加拿大时,然后再选择“请选择您的国家/地区”并按结帐我不知道得到任何警报。如果选择菜单中有“请选择您的国家/地区”并且用户按下结帐,我希望警报始终显示。
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
答案 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() {
...
});