Функция DOSARCH не может найти в Js, но может найти в строке почему? - PullRequest
0 голосов
/ 16 декабря 2010

Проблема в том, что onkeydown = "doSearch" выдает ошибку, из-за которой не может быть найдена функция дозы, которая находится в файле JS, но если я вставлю ее в строку, то она будет работать нормально.Я что-то не так делаю?

// В файле JS с именем jq.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>

1 Ответ

0 голосов
/ 16 декабря 2010

Для лучшей практики вы можете изменить это следующим образом, сделать их глобальными, почему вы храните все внутри функции готовности 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);
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...