如何在使用MVC3的自动完成文本框内显示加载图片(动画.gif文件)

5

我在我的asp.net MVC3应用程序中实现了自动完成文本框,但是我无法在搜索期间在文本框内显示加载图像。 我的代码如下:

Javascript

<link rel="stylesheet" href="http://code.jquery.com/ui/1.9.2/themes/base/jquery-ui.css" />
<script src="http://code.jquery.com/jquery-1.8.3.js" type="text/javascript"></script>
<script src="http://code.jquery.com/ui/1.9.2/jquery-ui.js" type="text/javascript"></script>
<script language="javascript" type="text/javascript">

$(document).ready(function () {
    $("#txtPONO").autocomplete({
        source: "/Transection/GetPONO",
        minLength: 2,
        select: function (event, ui) {
            $("#hdnPurContID").val(ui.item.id);
        }
    });
});


</script>

视图

<div style="float: left; padding: 9px 5px 5px 5px; width: 80px; vertical-align: middle"
                                class="fieldHead">
                                Enter @Html.LabelFor(l => l.PurchaseContract.AOPLPONO)
                            </div>
                            <div style="float: left; width: 200px; padding: 5px 0px 5px 0px;">
                                @Html.TextBoxFor(m => m.PurchaseContract.AOPLPONO, new { @id = "txtPONO", @class = "textbox", @style = "width:100%" })
                            </div>
                            <div style="float: left; width: 50px; padding: 4px 0px 0px 5px;">
                                <img alt="search" src="../../Content/images/Search.png" />
                                @Html.HiddenFor(model => model.PurchaseContract.PurContID, new { @id = "hdnPurContID" })
                            </div>

我希望在文本框右侧显示一个小的加载图像。
2个回答

12

添加一个这样的CSS类。

.loading
{
    background:url('path to your image') no-repeat right center;
}

现在触发搜索选项并打开自动完成选项

$("#txtPONO").autocomplete({
        source: "/Transection/GetPONO",
        minLength: 2,
        select: function (event, ui) {
            $("#hdnPurContID").val(ui.item.id);
        },
        search: function(){$(this).addClass('loading');},
        open: function(){$(this).removeClass('loading');}

    });

或者

更好的解决方案就是直接使用CSS类。

.ui-autocomplete-loading { background:url('img/loading.gif') no-repeat right center }

jQuery ui-autocomplete-loading 自动运行加载图像,以显示加载期间的进度。

希望这有所帮助。


1
正确的解决方案是上面列出的第二个。只要注意可能会遇到 CSS 特异性问题,其中另一个背景样式可能会覆盖您的样式。在这种情况下,您可以像添加元素 input.ui-autocomplete-loading { background:url('img/loading.gif') no-repeat right center; } 这样做。 - brian s

3
你可以这样做 -

.loadinggif {
    background:url('http://www.hsi.com.hk/HSI-Net/pages/images/en/share/ajax-loader.gif') no-repeat right center;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>

<input id='inputsource' />
<br>
<button onclick="$('#inputsource').addClass('loadinggif');">Show Loading</button>
<br>
<button onclick="$('#inputsource').removeClass('loadinggif');">Hide Loading</button>


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接