Hi again!
Here's the reprosteps of a bug for the example below: type sequentially letter 'a' and semicolon in intervals of 500 ms or less (approximately). I didn't measure precisely, but it is a bit slower than normal speed of touch-typing.
The error occurs: "Microsoft JScript runtime error: Unable to get value of the property 'left': object is null or undefined". The error occurs when both OnEntryAdded and OnEntryRemoved are assigned.
Default.aspx
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="TestAutocompleteSuggList._Default" %>
<%@ Register Assembly="Telerik.Web.UI, Version=2012.3.1120.35, Culture=neutral, PublicKeyToken=121fae78165ba3d4" Namespace="Telerik.Web.UI" TagPrefix="telerik" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<
html
xmlns
=
"http://www.w3.org/1999/xhtml"
>
<
head
id
=
"Head1"
runat
=
"server"
>
<
title
></
title
>
<
script
type
=
"text/javascript"
src
=
"Scripts/jquery-1.8.3.min.js"
></
script
>
</
head
>
<
body
>
<
form
id
=
"form1"
runat
=
"server"
>
<
div
>
<
asp:ScriptManager
ID
=
"ScriptManager1"
runat
=
"server"
/>
<
asp:UpdatePanel
runat
=
"server"
>
<
ContentTemplate
>
<
telerik:RadAutoCompleteBox
runat
=
"server"
ID
=
"racAutocomplete"
AllowCustomEntry
=
"true"
OnEntryAdded
=
"ServerEntryAdded"
OnEntryRemoved
=
"ServerEntryAdded"
InputType
=
"Token"
/>
</
ContentTemplate
>
</
asp:UpdatePanel
>
</
div
>
</
form
>
</
body
>
</
html
>
Default.aspx.cs
using
System;
using
System.Web.UI;
using
System.Collections.Generic;
using
Telerik.Web.UI;
using
System.Threading;
namespace
TestAutocompleteSuggList
{
public
partial
class
_Default : System.Web.UI.Page
{
protected
void
Page_Load(
object
sender, EventArgs e)
{
const
string
StartupJS = @"
var $input = jQuery(
'#{1} input[name=""{0}""]'
);
$input.focus();
";
ScriptManager.RegisterStartupScript(
this
,
//restore focus on AutocompleteBox
this
.GetType(),
"ScriptOnLoad"
,
string
.Format(StartupJS, racAutocomplete.ClientID.Replace(
"_"
,
"$"
), racAutocomplete.ClientID),
true
);
const
int
maxcount = 10;
racAutocomplete.DataSource =
new
List<
string
>() {
new
string
(
'a'
, maxcount),
new
string
(
'a'
, maxcount),
new
string
(
'a'
, maxcount),
new
string
(
'a'
, maxcount),
new
string
(
'a'
, maxcount),
new
string
(
'a'
, maxcount),
new
string
(
'a'
, maxcount),
new
string
(
'a'
, maxcount),
new
string
(
'a'
, maxcount),
new
string
(
'a'
, maxcount),
new
string
(
'a'
, maxcount),
new
string
(
'a'
, maxcount),
};
racAutocomplete.DataBind();
}
protected
void
ServerEntryAdded(
object
sender, AutoCompleteEntryEventArgs e)
{
}
}
}