2012-11-08 55 views
2

我正在使用asp.net进行开发,并且在屏幕上有一个文本框,光标位于应该添加某些文本的位置。如何使用JavaScript更新文本框内光标位置处的文本

页面上存在一个按钮,或者至少它会这样做,当按下按钮时将文本插入到光标位于按钮被按下的位置的文本框中,任何文本都不应丢失,只有在光标的位置。

这是可能的在JavaScript中,记住我不知道任何JavaScript超出警报('');当你点击按钮时,我确实明白光标位置可能会丢失。

实际上会有7个小按钮,每个按钮插入一个不同的字符串。

谢谢

+1

我不认为这是可能的,可以将数据添加或prepent数据,我可能是错的。 – freebird

+0

这被称为WYSIWYG .... –

+0

虽然有一个大的文本框可以很好,它可以将html或rtf写回数据库,并允许插入图像和粗体文本等,这绝不是要求。要求实际上如上所述。可以在游标位置插入文本的页面上的单独控件。 –

回答

3

是的,这是可能的。 这是我们使用的是做正是你需要做的是通过你的文本/ textarea的作为第一个参数,并通过文本作为第二个参数的函数,你在找什么

// myfield: the DOM element that you need to interact with 
// myValue: the text to be instered 
function insertAtCursor(myField, myValue) { 
    //IE support 
    if (document.selection) { 
     myField.focus(); 
     sel = document.selection.createRange(); 
     sel.text = myValue; 
    } 
    //MOZILLA/NETSCAPE support 
    else if (myField.selectionStart || myField.selectionStart == '0') { 
     var startPos = myField.selectionStart; 
     var endPos = myField.selectionEnd; 
     myField.value = myField.value.substring(0, startPos) 
     + myValue 
     + myField.value.substring(endPos, myField.value.length); 
    } else { 
     myField.value += myValue; 
    } 
} 

,和BOOM,它的工作!

更新:一个活生生的例子:http://jsbin.com/owesik/1/edit

+0

所以myField基本上是我想要插入值的控件的ClientID。在ASP.NET中,我有ClientID和ID,ClientID是html控件的客户端ID。我会举这个例子去谢谢 –

+0

我想为你做一个例子,坚持下去。 –

+0

不用了,我现在有一个运行的例子。我的疏忽是文本框在GridView中,所以在运行时我无法将一个按钮与用户所在的文本框相关联。更有可能的是,我需要找到在用户按下按钮时焦点集中的控件,然后得到该ID并打电话给你的功能,谢谢:) –

0

请参阅this answer几个指针。

短版是“是的,这是可能的,至少在最近的浏览器中”。但是,您需要自学一些JavaScript才能使其工作。我个人推荐这个online book(并且我绝不隶​​属于作者)。

相关问题