$(找到)不能始终如一地工作

时间:2017-12-06 14:46:37

标签: javascript jquery asp.net-ajax

我在网站上有一个搜索框,它使用带有web服务的AJAX扩展程序。 它在主页上完美运行。 http://www.as-technology.co.uk

我在子部分页面上拥有相同的控件 https://www.as-technology.co.uk/toner-cartridges/printer/brother

这是完全相同的控件,但页面在文件层次结构中低一级(不在根文件夹中,而是子文件夹)。

我已经缩小了与$(find)javascript函数有关的问题,因为在第二个网页中它无法找到名为" dp1"的AJAX扩展程序。在第一页示例(默认页面)中它。

名为UpdateControl的javascript函数

<script type="text/javascript">
function UpdateControl(value) {
    var behavior = $find('dp1');
    if (behavior) {
        behavior.populate(value);
    }
    return false;
}
function ClearSearch() {
    var lbl = $(this).find('lblSearchResults');
    lbl.value = "";
    return false;
}

 在第二页上,var&#34;行为&#34;是null,因此填充不起作用。

控件的代码是这样的。

 <%@ Control Language="C#" AutoEventWireup="true" 
    CodeFile="SearchBoxWithService.ascx.cs" 
    Inherits="MB.ASTechnology.UI.Controls.SearchBoxWithService" %>
    <%@ Import Namespace="MB.ASTechnology.UI" %>


    <script type="text/javascript">
    function UpdateControl(value) {
        var behavior = $find('dp1');
        if (behavior) {
            behavior.populate(value);
        }
        return false;
    }
    function ClearSearch() {
        var lbl = $find('lblSearchResults');
        lbl.value = "";
        return false;
    }
     </script>

    <asp:Panel ID="Panel1" runat="server" DefaultButton="btnGetHtml" 
    style="float:left;" >


    <div class="input-append">
        <input class="span2" id="txtGetHtml" type="text"  placeholder="Brand & printer model or cartridge code" style="width: 250px;height:35px;"  />
        <asp:Button  CssClass="btn btn-primary" ID="btnGetHtml" UseSubmitBehavior="true"  runat="server" OnClientClick="return UpdateControl(txtGetHtml.value)" Text="Search" />
        <asp:Button  CssClass="btn btn-default" ID="btnClearSearch" UseSubmitBehavior="true"  runat="server" OnClientClick="return ClearSearch" Text="Clear" />
    </div>

    <asp:Button  CssClass="btn" ID="Button1" UseSubmitBehavior="true"  runat="server"  Text="Search" visible="false"/> 
</asp:Panel>
<asp:Label ID="lblSearchResults" runat="server" Text=""></asp:Label>
<ajaxToolkit:DynamicPopulateExtender ID="dp1" runat="server" BehaviorID="dp1"
    TargetControlID="lblSearchResults" ServicePath="~/TextSearchService.asmx" ServiceMethod="DynamicPopulateMethod"
    ClearContentsDuringUpdate="true" PopulateTriggerControlID="Button1">
</ajaxToolkit:DynamicPopulateExtender>

2 个答案:

答案 0 :(得分:0)

我使用了幻灯片扩展器,它的工作方式基本如下:

$find('behaviorID')._contextKey = value;

我认为大多数扩展器的工作原理相同,所以它会像:

function UpdateControl(value) {
    var behavior = $find('dp1');
    if (behavior) {
        behavior._contextKey = value;
    }
    return false;
}

第h

答案 1 :(得分:0)

我已经解决了这个问题。我没有在页面上没有工作的ajax toolscriptmanager。相反,我有一个普通的asp脚本管理器。然后我把线放回$ find('dp1')并且它有效。