【问题标题】:dosearch function can not find in Js but can find inline why?dosearch函数在Js中找不到但是可以找到inline 为什么?
【发布时间】:2010-12-16 08:00:54
【问题描述】:

问题是 onkeydown="doSearch" 给出的错误是找不到 JS 文件中的 dosearch 函数,但如果我把它内联而不是它的工作正常。 我做错了吗?

//在名为jq.js的JS文件中

jQuery().ready(function () {
    jQuery("#bigset").jqGrid({
        //Grid code
    }).jqGrid('navGrid', '#pagerb', { edit: false, add: false, del: false, search: true }, {}, {}, {}, { multipleSearch: true });

        var timeoutHnd;
        var flAuto = false;

        function doSearch(ev) {
            if (!flAuto)
                return;
            //  var elem = ev.target||ev.srcElement;
            if (timeoutHnd)
                clearTimeout(timeoutHnd)
            timeoutHnd = setTimeout(gridReload, 500)
        }

        function gridReload() {
            var nm_mask = jQuery("#item_nm").val();
            var cd_mask = jQuery("#search_cd").val();
            jQuery("#bigset").jqGrid('setGridParam', { url: "/Jq/bigset?nm_mask=" + nm_mask + "&cd_mask=" + cd_mask, page: 1 }).trigger("reloadGrid");
        }
        function enableAutosubmit(state) {
            flAuto = state;
            jQuery("#submitButton").attr("disabled", state);
        }
    });

//CSHTML页面

@model Learning.Ajax.Models.Order

@{
    ViewBag.Title = "Index";
    Layout = "~/Views/Shared/_Layout.cshtml";
}

<div class="h">Search By:</div>
<div>
    Code<br />
    <input type="text" id="search_cd" onkeydown="doSearch(arguments[0]||event)" />
    <input type="checkbox" id="autosearch" onclick="enableAutosubmit(this.checked)" /> Enable Autosearch <br/>
</div>
<div>
    Name<br />
    <input type="text" id="item_nm" onkeydown="doSearch(arguments[0]||event)" />
    <button onclick="gridReload()" id="submitButton" style="margin-left:30px;">Search</button>
</div>
<br />
<table id="bigset"></table>
<div id="pagerb"></div>


<br /><br />
@*<table id="addgrid"></table>
<div id="pagerad"></div>
<input type="button" id="adddata" value="Add" />
<input type="button" id="editdata" value="Edit Selected" />*@


<script src="@Url.Content("~/Scripts/jq.js")" type="text/javascript"></script>

【问题讨论】:

  • 当你把所有的函数都保存在 jquery .ready 中时,作用域变成了本地的,把它们移出,这样它们就会是全局的

标签: jquery jqgrid asp.net-mvc-3


【解决方案1】:

为了更好的实践,你能不能像这样改变它,让它们成为全局的,为什么你把所有东西都保存在 jQuery 就绪函数中......

试一试应该可以的

jQuery().ready(function () {
    jQuery("#bigset").jqGrid({
        //Grid code
    }).jqGrid('navGrid', '#pagerb', { edit: false, add: false, del: false, search: true }, {}, {}, {}, { multipleSearch: true });


    });


var timeoutHnd;
        var flAuto = false;

        function doSearch(ev) {
            if (!flAuto)
                return;
            //  var elem = ev.target||ev.srcElement;
            if (timeoutHnd)
                clearTimeout(timeoutHnd)
            timeoutHnd = setTimeout(gridReload, 500)
        }

        function gridReload() {
            var nm_mask = jQuery("#item_nm").val();
            var cd_mask = jQuery("#search_cd").val();
            jQuery("#bigset").jqGrid('setGridParam', { url: "/Jq/bigset?nm_mask=" + nm_mask + "&cd_mask=" + cd_mask, page: 1 }).trigger("reloadGrid");
        }
        function enableAutosubmit(state) {
            flAuto = state;
            jQuery("#submitButton").attr("disabled", state);
        }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-02
    • 1970-01-01
    • 2018-12-18
    • 1970-01-01
    • 2018-07-05
    • 1970-01-01
    相关资源
    最近更新 更多