例如:我输入了这个值:(099)123 45 67 我想_
在删除时用下划线()替换数字:(099)123 __ __
我怎样做?我有返回当前字符位置的函数。然后charAt()
我得到这个字符,然后用replace()
. 但是如果有多个相同的字符,它会替换第一个,而不是光标旁边的那个。有什么想法吗?
例如:我输入了这个值:(099)123 45 67 我想_
在删除时用下划线()替换数字:(099)123 __ __
我怎样做?我有返回当前字符位置的函数。然后charAt()
我得到这个字符,然后用replace()
. 但是如果有多个相同的字符,它会替换第一个,而不是光标旁边的那个。有什么想法吗?
不同的答案 - 有点类似于@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 上的那个。
我不认为标准replace()
功能可以容纳这种类型的替换。
您必须使用substring()
将字符串拆分为(字符之前的一个字符串和字符之后的一个字符串),然后将它们与中间的字符串连接在一起'_'
。
使用替换作为正则表达式函数。通过在斜杠中使用搜索表达式来做到这一点。要查找所有出现(所有数字,而不仅仅是第一个),请通过在搜索表达式后添加“g”将其与全局选项一起使用。在您的情况下,您应该使用 replace(/[0-9]/g, "_")