-1

例如:我输入了这个值:(099)123 45 67 我想_在删除时用下划线()替换数字:(099)123 __ __

我怎样做?我有返回当前字符位置的函数。然后charAt()我得到这个字符,然后用replace(). 但是如果有多个相同的字符,它会替换第一个,而不是光标旁边的那个。有什么想法吗?

4

3 回答 3

0

不同的答案 - 有点类似于@samjudson 所说的:

您需要使用子字符串,但这有点复杂。

对于 IE 或 Opera,请使用此对象:document.selection.createRange().text = "_";

对于 Mozilla 浏览器,请使用:

inputBox.focus();
var position = inputBox.selectionStart; //selectionEnd would work as well
inputBox.value = inputBox.value.substring(0, position) + '_' +
inputBox.value.substring(position, inputBox.value.length);

来自 RT 编辑的想法,例如这个 :),以及 Wikipedia 上的那个。

于 2012-05-01T09:44:24.573 回答
0

我不认为标准replace()功能可以容纳这种类型的替换。

您必须使用substring()将字符串拆分为(字符之前的一个字符串和字符之后的一个字符串),然后将它们与中间的字符串连接在一起'_'

于 2012-05-01T08:08:24.537 回答
0

使用替换作为正则表达式函数。通过在斜杠中使用搜索表达式来做到这一点。要查找所有出现(所有数字,而不仅仅是第一个),请通过在搜索表达式后添加“g”将其与全局选项一起使用。在您的情况下,您应该使用 replace(/[0-9]/g, "_")

于 2012-05-01T08:11:47.610 回答