EditMode="EditForms"I need to create a Javascript that does the following:
Detect when the first key is pressed in the RadEditor
Locate the cursor
Programatically insert a piece of text where the cursor is
Allow the normal process to continue, ie the key pressed by the user is to be added immediately after where I added the text.
I managed to do this for non-telerik normal text areas. But it is giving me big problems with telerik RadEditor.Net2.dll version 7.2.0.0
On clientload of rad editor I am adding a KeyPress event handler. However, in keypress method I am unable to get the cursor position. I am using this script:
function getCaret(editor) {
if (editor.selectionStart) {
return editor.selectionStart;
}
else if (!document.selection) {
return 0;
}
var c = "\001";
var sel = document.selection.createRange();
var dul = sel.duplicate();
var len = 0;
dul.moveToElementText(editor); <-- GIVES JAVASCRIPT EXCEPTION OVER HERE
sel.text = c;
len = dul.text.indexOf(c);
sel.moveStart('character', -1);
sel.text = "";
return len;
}
What do you recommend? Am I approaching this incorrectly for RadEditor? I really need to get this working!

<
telerik:RadSlider runat="server" ID="RadSlider1" IsSelectionRangeEnabled="true"
MinimumValue="0" MaximumValue="300" SmallChange="1" SelectionStart="0" SelectionEnd="300"
OnClientValueChanging="OnClientValueChanging" OnValueChanged="RadSlider1_ValueChanged"
OnClientSlideStart="OnClientSlideStart" OnClientSlideEnd="OnClientSlideEnd" AutoPostBack="true"
ShowDecreaseHandle="false" ShowIncreaseHandle="false" />
SelectionStart: $
<asp:Label ID="lblSelectionStart" runat="server" Text="0"></asp:Label><br />
SelectionEnd: $
<asp:Label ID="lblSelectionEnd" runat="server" Text="300"></asp:Label>
Protected Sub RadSlider1_ValueChanged(ByVal sender As Object, ByVal e As EventArgs)
lblSelectionStart.Text = RadSlider1.SelectionStart.ToString()
lblSelectionEnd.Text = RadSlider1.SelectionEnd.ToString()
RadGrid1.Rebind()
End Sub
SelectCommand
="SELECT * FROM [Products] INNER JOIN [Suppliers] ON Products.SupplierID=Suppliers.SupplierID WHERE (UnitPrice > @MinimumPrice) AND (UnitPrice < @MaximumPrice) AND (UnitsInStock > @MinimumStock) AND (UnitsInStock < @MaximumStock) AND (CategoryID > @MinimumCategory) AND (CategoryID < @MaximumCategory)">
<asp:ControlParameter ControlID="RadSlider1" PropertyName="SelectionStart" Name="MinimumPrice" />
| <telerik:RadAjaxPanel runat="server" ID="rapResource" LoadingPanelID="ralpResource"> |
| <telerik:RadGrid ID="rgResourceList" runat="server" AllowPaging="true" PageSize="15" > |
| <MasterTableView AutoGenerateColumns="false" PageSize="15" AllowPaging="true"> |
| <Columns> |
| <telerik:GridTemplateColumn UniqueName="JobLinks" HeaderText="" /> |
| <telerik:GridTemplateColumn UniqueName="Tech" HeaderText="Technician" /> |
| <telerik:GridTemplateColumn UniqueName="Program" HeaderText="Program" Visible="false" /> |
| <telerik:GridTemplateColumn UniqueName="JobNumber" HeaderText="JobNumber" Visible="false" /> |
| <telerik:GridTemplateColumn UniqueName="ETA" HeaderText="ETA" /> |
| <telerik:GridTemplateColumn UniqueName="ETC" HeaderText="ETC" /> |
| <telerik:GridTemplateColumn UniqueName="Phone" HeaderText="Phone" /> |
| <telerik:GridTemplateColumn UniqueName="City" HeaderText="City" Visible="false" /> |
| <telerik:GridTemplateColumn UniqueName="State" HeaderText="State" Visible="false" /> |
| <telerik:GridTemplateColumn UniqueName="WorkOrder" HeaderText="WorkOrder"> |
| <ItemTemplate> |
| <asp:ImageButton runat="server" ID="ibtnPrint" ImageUrl="~/Images/iconPrint.png" |
| AlternateText="" ToolTip="Print Work Order" /> |
| <asp:ImageButton runat="server" ID="ibtnEmail" ImageUrl="~/Images/iconEmail.gif" |
| AlternateText="" ToolTip="Email Work Order" /> |
| <asp:ImageButton runat="server" ID="ibtnEmailAttach" ImageUrl="~/Images/iconEmailAttach.gif" |
| AlternateText="" ToolTip="Email as Attachment" /> |
| </ItemTemplate> |
| </telerik:GridTemplateColumn> |
| </Columns> |
| </MasterTableView> |
| </telerik:RadGrid> |
| </telerik:RadAjaxPanel> |
| <telerik:RadAjaxLoadingPanel runat="server" ID="ralResource" /> |


<telerik:RadComboBox ID="lstTransTypes" runat="server" MarkFirstMatch="true" Skin="Vista" EmptyMessage="Select tranaction Type" AllowCustomText="true" Width="100%" AutoPostBack="True" OnSelectedIndexChanged="lstTransTypes_SelectedIndexChanged"> <ItemTemplate> <div id="div1"> <telerik:RadTreeView ID="tvwTransTypes" DataFieldID="id" DataFieldParentID="parentid" Skin="Vista" CheckBoxes="true" CheckChildNodes="true" DataTextField="valuetext" runat="server" Width="400px" Height="250px" OnNodeCheck="tvwTransTypes_NodeCheck"> <DataBindings> <telerik:RadTreeNodeBinding Expanded="False" /> </DataBindings> </telerik:RadTreeView> </div> </ItemTemplate> <Items> <telerik:RadComboBoxItem /> </Items> </telerik:RadComboBox><telerik:RadAjaxManagerProxy ID="AjaxManagerProxy1" runat="server"> <AjaxSettings> <telerik:AjaxSetting AjaxControlID="lstTransTypes"> <UpdatedControls> <telerik:AjaxUpdatedControl ControlID="lstFilter" LoadingPanelID="RadAjaxLoadingPanel1" UpdatePanelHeight="" /> </UpdatedControls> </telerik:AjaxSetting>
</AjaxSettings> </telerik:RadAjaxManagerProxy>Telerik.Web.UI.RadInputControl.registerClass("Telerik.Web.UI.RadInputControl",Telerik.Web.UI.RadWebControl); if(typeof(ValidatorSetFocus)=="function"){ValidatorSetFocus=function(d,a){var g; if(typeof(d.controlhookup)=="string"){var f; if((typeof(a)!="undefined")&&(a!=null)){if((typeof(a.srcElement)!="undefined")&&(a.srcElement!=null)){f=a.srcElement; }else{f=a.target; }}if((typeof(f)!="undefined")&&(f!=null)&&(typeof(f.id)=="string")&&(f.id==d.controlhookup)){g=f; }}if((typeof(g)=="undefined")||(g==null)){g=document.getElementById(d.controltovalidate); }var c=false; if((g.style)&&(typeof(g.style.visibility)!="undefined")&&(g.style.visibility=="hidden")&&(typeof(g.style.width)!="undefined")&&(document.getElementById(g.id+"_text")||document.getElementById(g.id+"_dateInput_text"))&&(g.tagName.toLowerCase()=="input"||g.tagName.toLowerCase()=="textarea")){c=true; Sample CustomValidator control:
<asp:CustomValidator ID="CustomValidator1" runat="server" SetFocus="true" OnServerValidate="CheckSelectedClients" CssClass="validation-error" ErrorMessage="CustomValidator1"></asp:CustomValidator>protected void CheckSelectedClients(object source, ServerValidateEventArgs args) { try { if (selSelectedClientFamily.Items.Count > 0) args.IsValid = true; else args.IsValid = false; } catch (Exception) { args.IsValid = false; } }