【发布时间】:2020-04-23 14:01:24
【问题描述】:
原帖
我的自定义仪表板具有包含 Font Awesome 图标和按钮或表单操作的文本描述的按钮。我的表单和按钮存在问题,在单击具有 jQuery 单击事件的按钮中的超棒字体图标时,表单未提交。我可以使用一些帮助来找出我做错了什么。
在这个图像示例中,有一个字体很棒的放大镜“搜索”图标,后面是文本“搜索”。
如果我单击按钮上的任意位置,我的 jQuery 将通过将按钮的内部 HTML 替换为字体真棒图标微调器图标和文本“正在搜索...”来正常工作。如果我直接点击字体真棒图标,表单不会提交。如果我单击按钮上除字体真棒图标之外的任何其他位置,则表单将正确提交。如果我删除了在单击按钮时替换 innerHTML 的 jQuery click() 函数,即使直接单击字体真棒图标,表单也会正确提交。它与 jquery click html 代码有关,但我不确定我做错了什么。
我的 jQuery 做错了什么导致在按钮内单击字体真棒图标时无法提交表单?
此图像显示 jQuery 正确替换了按钮的内部 HTML,但是当直接单击 font awesome 图标时,表单没有提交。仅当在其他任何地方单击按钮时,表单才会提交,除了直接在字体真棒图标上。
这是我的搜索按钮的 jQuery 和 HTML
$(document).ready(function() {
$('#search-btn').click(function() {
$(this).html('<i class="fas fa-spinner fa-spin gap-right"></i> Searching ...');
});
//$('#search-btn').click(function() { $('#search-btn').html('<i class="fas fa-spinner fa-spin gap-right"></i> Searching ...'); });
});
<link href="https://fontawesome.com/v4.7.0/assets/font-awesome/css/font-awesome.css">
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<button type="submit" id="search-btn" name="search" value="Search" class="btn btn-primary gap-right"><i class="fas fa-search gap-right"></i> Search</button>
任何建议将不胜感激。如果需要更多信息或澄清,请告诉我,我会更新。谢谢。
2020 年 1 月 6 日更新
示例:https://www.seibertron.com/dashboard/test/button-problem-public.php
上例中的问题在于“搜索”按钮。如果单击按钮的右侧,它会按预期工作(带有微调器图标并将文本从“搜索”更改为“正在搜索...”)。如果您单击“搜索”按钮左侧的字体真棒放大镜图标,它不会提交。重置按钮在示例中有效,因为它只是使用传统的 javascript 来重定向用户,而不是提交表单。提前感谢您查看此问题!
更新和决议 2020 年 1 月 6 日
感谢 fyrye,我采纳了他的建议并将我的 button.js jQuery 文件修改为以下内容,这适用于我的自定义 Inspinia 仪表板。此外,当我昨晚研究这个问题时,我发现了一个内置于 Bootstrap 的替代解决方案,它可能适用于希望将此功能添加到其代码中的其他用户:How to add a spinner icon to button when it's in the Loading state?
编码愉快!
$(document).ready(function(){
$('form').on('submit', function(e) {
$(this).find('#test-search-btn').html('<i class="fa fas fa-spinner fa-spin gap-right"/> Searching...');
$(this).find('#search-btn').html('<i class="fa fas fa-spinner fa-spin gap-right"/> Searching...');
$(this).find('#add-btn').html('<i class="fas fa-spinner fa-spin gap-right"></i> Adding ...');
$(this).find('#approve-btn').html('<i class="fas fa-spinner fa-spin gap-right"></i> Saving ...');
$(this).find('#save-btn').html('<i class="fas fa-spinner fa-spin gap-right"></i> Saving ...');
$(this).find('#copy-btn').html('<i class="fas fa-spinner fa-spin gap-right"></i> Copying ...');
$(this).find('#move-btn').html('<i class="fas fa-spinner fa-spin gap-right"></i> Moving ...');
$(this).find('#upload-btn').html('<i class="fas fa-spinner fa-spin gap-right"></i> Uploading ...');
$(this).find('#nav-refresh-btn').html('<i class="fas fa-refresh fa-lg fa-spin gap-right"></i>');
$(this).find('#load-btn').html('<i class="fas fa-spinner fa-lg fa-spin gap-right"></i> Loading ...');
$(this).find('#generate-btn').html('<i class="fas fa-spinner fa-lg fa-spin gap-right"></i> Generating ...');
});
$('#cancel-btn').click(function() { $(this).html('<i class="fas fa-spinner fa-spin gap-right"></i> Canceling ...'); });
$('#reset-btn').click(function() { $(this).html('<i class="fas fa-spinner fa-spin gap-right"></i> Resetting ...'); });
$('.button-save').click(function() { $(this).html('<i class="fas fa-spinner fa-spin gap-right"></i> Saving ...'); });
$('.button-go-back').click(function() { $(this).html('<i class="fas fa-spinner fa-spin gap-right"></i> Loading ...'); });
$('.button-sm-edit').click(function() { $(this).html('<i class="fas fa-spinner fa-spin fa-lg" title="Loading ..."></i>'); });
$('.button-sm-delete').click(function() { $(this).html('<i class="fas fa-spinner fa-spin fa-lg" title="Deleting ..."></i>'); });
$('.button-sm-build').click(function() { $(this).html('<i class="fas fa-spinner fa-spin fa-lg" title="Building ..."></i>'); });
$('.button-sm-code').click(function() { $(this).html('<i class="fas fa-spinner fa-spin fa-lg" title="Generating ..."></i>'); });
$('#navbar-toggle-btn').click(function(e) {
$(this).html('<i class="fas fa-spinner fa-spin" title="Loading ..."></i>');
setTimeout(
function () {
$('#navbar-toggle-btn').html('<i class="fas fa-bars"></i>');
}, 500);
});
});
【问题讨论】:
-
“gap-right”的样式是什么。这可能是问题吗?
-
我很确定这不是 CSS 问题,而是 jQuery 问题,尽管我可能完全错了!无论哪种方式,这里都是根据您的请求“gap-right”的 CSS。 .gap-right { margin-right:10px; }
-
你可以试试
.gap-right { padding-right:10px; }吗? -
它只是改变了微调器的外观,因为边距消失了。 CSS不应该与表单是否提交有任何关系,如果我注释掉这个按钮的行,我可以隔离它与jQuery代码有关。
标签: jquery html forms button font-awesome