单击时选择2(未选中),显示加载微调器javascript
Select2 upon click(not selected), show loading spinner javascript
好吧,我的代码很简单。我使用的是示例数据,但在我的真实代码中,单击select2下拉列表时,数据需要很长时间才能加载,并表示我希望包含一个加载微调器,该微调器在单击下拉列表时显示,并在数据加载完成后隐藏。到目前为止,我还不能把它做好。当select2被更改或选中时,它会起作用,但当单击它时,它不会起作用。任何建议
<div class="col-sm-3 loader">
<%= select_tag 'clone-application-id', options_from_collection_for_select(@applications, :id, :case_code), prompt: "Please Select", class: "form-horizontal single-select" %>
</div>
<%= image_tag "ajax-loader.gif", id: "loading-indicator", style: "display:none" %>
我的js文件
$('#clone-application-id').select2().on('change', function() {
console.log("ok now what");
$('#loading-indicator').show();
});
函数在选择"changed"时调用,但在"click"时不调用。这是意料之中的行为还是打字错误?也许将其更改为"点击"可以解决这种情况。
$('#clone-application-id').select2().on('click', function() {
console.log("ok now what");
$('#loading-indicator').show();
});
我有一个关于Ajax调用的select2下拉加载微调器的解决方案。。有了2个简单的功能,我们将在下拉中放置加载图标
添加引用(select2下拉cdn)
<link href="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.6-rc.0/css/select2.min.css" rel="stylesheet" />
<script src="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.6-rc.0/js/select2.min.js"></script>
Html
div class="row">
<div class="col-md-4">
<select class="js-example-basic-single" name="state" id="country">
<option value="AL">Alabama</option>
<option value="WY">Wyoming</option>
<option value="ZB">Zimbamwe</option>
<option value="TR">Türkiye</option>
</select>
</div>
<div class="col-md-4">
<select class="js-example-basic-single" name="state" id="city"></select>
</div>
<div class="col-md-4">
<select class="js-example-basic-single" name="state" id="district"></select>
</div>
addLoadSpiner
此函数用于在下拉列表中添加或显示微调器gif。加载微调器被动态创建为html元素并添加到下拉列表中。如果之前已经添加,只显示在屏幕上。
function addLoadSpiner(el) {
debugger;
if (el.length > 0) {
if ($("#img_" + el[0].id).length > 0) {
$("#img_" + el[0].id).css('display', 'block');
}
else {
var img = $('<img class="ddloading">');
img.attr('id', "img_" + el[0].id);
img.attr('src', 'http://www.lettersmarket.com/uploads/lettersmarket/blog/loaders/common_gray/ajax_loader_gray_512.gif');
img.css({ 'display': 'block', 'width': '25px', 'height': '25px', 'z-index': '100', 'float': 'right' });
img.prependTo(el[0].nextElementSibling);
}
el.prop("disabled", true);
}
}
hideLoadSpinner
添加css css('display', 'none')
从屏幕中删除
function hideLoadSpinner(el) {
if (el.length > 0) {
if ($("#img_" + el[0].id).length > 0) {
setTimeout(function () {
$("#img_" + el[0].id).css('display', 'none');
el.prop("disabled", false);
}, 500);
}
}
}
使用Ajax加载数据
最后,Loading微调器出现在显示器上,直到Ajax完成
$.ajax({
url: "/Home/GetCities",
data: JSON.stringify({
'countryId': $("#country option:selected").val()
}),
type: 'POST',
cache: false,
contentType: 'application/json; charset=utf-8',
dataType: "json",
success: function (result) {
var dbSelect = $('#city');
addLoadSpiner(dbSelect);
dbSelect.empty();
$.each(result, function (index, item) {
dbSelect.append("<option value='" + item.id + "'>" + item.text + "</option>")
});
hideLoadSpinner(dbSelect);
},
error: function (xhr, ajaxOptions, thrownError) {
alert(thrownError);
}
});
相关文章:
- 如何在生成下载文件时显示加载动画
- 如何在谷歌字体加载时显示加载图像
- 有没有比在app.js上绑定模块名称更好的方法来动态加载视图模型和视图以显示模态
- 如何用ajax实现加载显示
- 使用javascript加载/显示图像并获得%下载
- 谷歌地图不会加载/显示KML文件
- 我的图片不是使用惰性加载显示的
- javascript d3可视化不加载/显示,直到点击HTML输入
- 导航标签动态加载/显示
- jQuery Select2远程数据加载:显示选项而不是占位符
- Console.log一些东西一旦异步Facebook喜欢按钮加载(显示)
- PHP停止表单重新加载显示错误Js
- 预加载显示/隐藏分区
- ReCaptcha不会在IE中加载/显示,但在Chrome和safari中可以完美运行
- dom事件——通过JavaScript加载显示一个又一个元素
- jQuery延迟加载-显示的问题:无
- Json.数据没有正确加载/显示
- 在每个页面加载显示不同的图像
- 如何检测PDF数据对象是否在html对象中加载/显示/有效
- Jquery添加页面加载显示请求的标签功能