【问题标题】:javascript $find returns null in IEjavascript $find 在 IE 中返回 null
【发布时间】:2011-08-24 08:14:39
【问题描述】:

我正在使用 AJAX 控件工具包控件“TextBoxWaterMarkExtender”。问题最初是在 Firefox 中,使用 javascript 设置文本,如下所示:

var getDateField = document.getElementById('soandso');
getDateField.value = 'someandsome';

将在提交/发布时被清除,因为扩展器控件认为没有人编辑它,所以它正在清除“水印”。

我遵循了这个解决方法:http://www.mindfiresolutions.com/Workaround-for-TextBoxWatermarkExtender-of-AjaxControlToolkit--855.php

它在 Firefox 中运行良好,但 IE 在这一行显示“'null' is null or not an object”:

var dateIdentified = $find("Beh" + sender).get_Text();

我遗漏了什么明显的东西?

编辑:对不起,我认为 $find 是一个 jQuery 函数。

编辑:更多代码:

function dateToday(sender)
        {
            var dateIdentified = $find("Beh" + sender).get_Text();
            if (dateIdentified.length == 0)
            {
                var todaydate = new Date();
                var smonth = todaydate.getMonth() + 1;
                var sday = todaydate.getDate();
                var syear = todaydate.getFullYear();
                $find("Beh" + sender).set_Text(smonth.toString() + '/' + sday.toString() + '/' + syear.toString());
            }
        }

水印:

<toolkit:TextBoxWatermarkExtender BehaviorID="BehSTART_DATE" ID="WaterMarkSTART_DATE" runat="server"  
 TargetControlID="dcSTART_DATE"
 WaterMarkText="mm/dd/yyyy" WaterMarkCssClass="searchHint" /> 

【问题讨论】:

  • 首先,您的初始示例是原生 Javascript。在第二个示例中,您没有正确调用 .find() 方法。你想做什么? api.jquery.com/find
  • $find 命令来自 .net javascript 库。它不是 jQuery。它用于查找 .net dom 扩展,例如 TextboxWaterMarkExtenderAccordion
  • 您能否在出现错误的行周围提供更多代码?另外,包括水印扩展器的标记
  • 我看不出有什么明显的问题。您传递给dateToday() 的值是多少?是'START_DATE'吗?
  • @Jeff,是的,这不是问题所在。请记住,它适用于 Firefox 而不是 IE。

标签: asp.net ajax asp.net-ajax ajaxcontroltoolkit


【解决方案1】:

对于任何有兴趣知道的人,我从使用 body onLoad 调用我的 javascript 函数切换到

Sys.Application.add_load(MyFunction);

正如本文建议的那样:http://blogs.telerik.com/dimodimov/posts/08-12-13/don_t_use_body_onload_in_asp_net_ajax_websites.aspx

现在 IE、Firefox 和 Chrome 都可以看到 $find 的值。

【讨论】:

    【解决方案2】:

    试试这个:

    $("Beh" + sender).text();
    

    find() 在您已经查找了一个或多个元素并且想要在其中查找子元素时使用。例如,你抓取一个表格,然后想在表格中查找所有具有 foo 类的元素,如下所示:

    var myTable = $('#myTable');
    // more code
    myTable.find('.foo');
    

    【讨论】:

    • $("Beh" + sender).text();也返回 null。
    • 我应该注意这仅适用于 jQuery。如果您使用的是 MS ajax 库,则此代码将不起作用。似乎 MS 库已经劫持了 $ 所以你可以尝试用 jQuery 替换我代码中的 $(例如 jQuery("Beh" + sender); )
    • 出于某种原因,我什至不能这样称呼它。 jQuery 未定义。我已经包含了 src。
    • 您的 javascript 控制台中是否有任何错误?他们可能会指出为什么 jQuery 没有被加载。编辑:确认您的 jquery 文件路径也是正确的。一条糟糕的道路让我不止一次。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-29
    • 2016-04-27
    • 1970-01-01
    相关资源
    最近更新 更多