javascript - 促销代码激活表问题
问题描述
我正在网站上制作一个表格,用户可以在其中输入促销代码并接收网站余额的款项。但是当我尝试输入促销代码(甚至发送一个空的促销代码或输入一些数字)时,页面只是重新加载,并且网站的控制台是空的。尽管输入促销代码的页面不应重新加载。
我的 JS 代码:
$(document).on('click', '.activate-voucher-btn', function () {
var el = $(this).parents('.bonus-code').find('.activate-voucher-input');
var code = el.val().trim();
$.ajax({
url: '/promocode',
type: 'POST',
dataType: 'json',
data: {code: code},
success: function (data) {
toastr.info(data.status, data.message);
updateBalance();
},
error: function (err) {
toastr.error(err.status, err.message);
console.log(err.responseText);
}
});
});
我的刀片代码:
<div class="bonus-code"><div class="bonus-code-component"><form class="bonus-code-container f-2">
<label class="bonus-code__warning mb-0">
<span rv-translate="">Enter promo code</span>:
</label>
<input type="text" class="form-control text-uppercase activate-voucher-input" style="color: #000;">
<button class="btn-link activate activate-voucher-btn" type="submit">Activate</button>
</form>
</div></div>
当我尝试输入促销代码时,页面会重新加载(尽管它不应该)并且没有任何反应。问题可能出在哪里?
解决方案
表单中的<button>
元素默认行为是提交表单。
有两种解决方案。首先是让您的点击事件处理程序返回 false:
$(document).on('click', '.activate-voucher-btn', function() {
// ... stuff
return false;
});
另一种是使用event
对象的preventDefault()
方法:
$(document).on('click', '.activate-voucher-btn', function(event) {
event.preventDefault();
// ... stuff
});
推荐阅读
- bash - 在 bash 中配置配置文件
- r - 如何找到下一步要走
- apache - .htaccess 重写 - 删除所有扩展
- sql - SQL CASE 表达式
- excel - 粘贴到 Excel ActiveX 组合框
- java - 如何替换所有非字母字符并保留空格?
- c# - 如何使用 C# 删除 xml 文件中的父节点和 xml 声明?
- snowflake-cloud-data-platform - 我可以根据雪花中的模式名称获取数据库名称吗
- javascript - Firefox 删除了生成的 iframe 的 innerHTML
- javascript - 使用 Javascript 正则表达式将匹配的文本移动到字符串的末尾