怎样判断一个text对象中当前的光标处在第几个字符的位置?

时间:2021-11-15 12:31:01
我要用text做一个时间控件,输入时间的格式为
YYYY-MM-DD HH24:MI:SS
2001-08-29 11:04:59
现在需要知道text对象中当前的光标处在第几个字符的位置,
请教各位。

14 个解决方案

#1


据我所知,我们得不到这个位置的值,毕竟它不是Windows应用程序。
你是否可以贴出你的真正用意,说不定我们有其它的方法来解决。

#2


这个真的没有思路,也许孟子会有办法,我比较同意楼上,说出你的用意,我们大家肯定有办法解决的~

#3


我的目的很简单:就是要对text中的输入值做严格的控制,现在我可以做到用户从左往右输入ok,但是请注意,这只是从左往右输入,如果用户用箭头键向前移动后再修改的话,我就没有办法了。
我想用纯JavaScript做一个时间控件,虽然有一些ocx控件,但我还是不想用ocx,因为ocx不thin。
我的这段代码比较长,有两百多行。
如果两位有兴趣的话,请告之email,我给你们发过去。

#4


我觉得你是不是可以这么做,不就是为了限制用户输入的数据是否符合你的规定嘛,我们可以不再乎它的过程,我们是不是可以只关注它的结果?
a.数据提交之前进行判断,不合法就alert()错误信息,不给提交。
b.利用onBlur()事件,当用户输入完数据改变焦点时,我们进行判断,代码代替如下:
  <input name="cnlTest" id="cnlTest" value="" onblur="fnBlur()">
  function fnBlur()
  {
     var strTemp = document.all.cnlTest.value;
     var blnOK = true;
     ...  判断是否合法
     if(!blnOK)    // 不合法
     {
          document.all.cnlTest.focus();   // 该输入框又获得输入焦点,用户必须得保证数据合法,才能做下一步操作
     }
  }

#5


您说的这一点是我留做最后的迫不得已的最后一招。
因为我要对数据进行格式化,其中有一些字符如"-"," ",":"是要做特殊处理的。
比如当用户输完2001后,我会在keypress中在text中自动加入一个"-",
用户不需要手工的输入"-",这是程序自己做的。用户只需要在后面直接输入阿拉伯数字就行了。
所有我必须实时的监控用户的输入值。

#6


我只能遗憾地告诉您:在javascript中,做不到这一点。

#7


找个日历程序不就行了,网上无数

#8


当输入获得焦点时,一直运行一个检测函数,检测到输入值是2001 时,自动改变输入框的值为2001-,
函数运行到输入焦点离开

#9


to aukw(aukw):
你现在解决了这个问题了吗?

#10


aukw(aukw)说的对。
还有,试试用正则表达式来做。

#11


我也碰到这个问题,不过是对输入的数字进行控制的。
在text框中输入实数,其中小数位数可以设订,
输入第一个数字时,text的value为*.000,然而,光标到最后位置。
所以我想怎么把光标移动呢,用javascript自动实现!~

#12


你可以在文本框中当有键按下时,或值改变时,读取按下的键的ASCII码,与先前的
值进行比较,找到他们的差别所在,就可以确定在什么位置按下了键,

我想这么是可以的。

#13


有没有办法让javascript模拟按下键盘往左移的操作。

#14


aukw(aukw)说的对。
可以文本框的值的长度是4时加“-”,是7时又加“-”。。。
不过修改时问题就出了。

做不到IP 地址输入框那么方便。

#1


据我所知,我们得不到这个位置的值,毕竟它不是Windows应用程序。
你是否可以贴出你的真正用意,说不定我们有其它的方法来解决。

#2


这个真的没有思路,也许孟子会有办法,我比较同意楼上,说出你的用意,我们大家肯定有办法解决的~

#3


我的目的很简单:就是要对text中的输入值做严格的控制,现在我可以做到用户从左往右输入ok,但是请注意,这只是从左往右输入,如果用户用箭头键向前移动后再修改的话,我就没有办法了。
我想用纯JavaScript做一个时间控件,虽然有一些ocx控件,但我还是不想用ocx,因为ocx不thin。
我的这段代码比较长,有两百多行。
如果两位有兴趣的话,请告之email,我给你们发过去。

#4


我觉得你是不是可以这么做,不就是为了限制用户输入的数据是否符合你的规定嘛,我们可以不再乎它的过程,我们是不是可以只关注它的结果?
a.数据提交之前进行判断,不合法就alert()错误信息,不给提交。
b.利用onBlur()事件,当用户输入完数据改变焦点时,我们进行判断,代码代替如下:
  <input name="cnlTest" id="cnlTest" value="" onblur="fnBlur()">
  function fnBlur()
  {
     var strTemp = document.all.cnlTest.value;
     var blnOK = true;
     ...  判断是否合法
     if(!blnOK)    // 不合法
     {
          document.all.cnlTest.focus();   // 该输入框又获得输入焦点,用户必须得保证数据合法,才能做下一步操作
     }
  }

#5


您说的这一点是我留做最后的迫不得已的最后一招。
因为我要对数据进行格式化,其中有一些字符如"-"," ",":"是要做特殊处理的。
比如当用户输完2001后,我会在keypress中在text中自动加入一个"-",
用户不需要手工的输入"-",这是程序自己做的。用户只需要在后面直接输入阿拉伯数字就行了。
所有我必须实时的监控用户的输入值。

#6


我只能遗憾地告诉您:在javascript中,做不到这一点。

#7


找个日历程序不就行了,网上无数

#8


当输入获得焦点时,一直运行一个检测函数,检测到输入值是2001 时,自动改变输入框的值为2001-,
函数运行到输入焦点离开

#9


to aukw(aukw):
你现在解决了这个问题了吗?

#10


aukw(aukw)说的对。
还有,试试用正则表达式来做。

#11


我也碰到这个问题,不过是对输入的数字进行控制的。
在text框中输入实数,其中小数位数可以设订,
输入第一个数字时,text的value为*.000,然而,光标到最后位置。
所以我想怎么把光标移动呢,用javascript自动实现!~

#12


你可以在文本框中当有键按下时,或值改变时,读取按下的键的ASCII码,与先前的
值进行比较,找到他们的差别所在,就可以确定在什么位置按下了键,

我想这么是可以的。

#13


有没有办法让javascript模拟按下键盘往左移的操作。

#14


aukw(aukw)说的对。
可以文本框的值的长度是4时加“-”,是7时又加“-”。。。
不过修改时问题就出了。

做不到IP 地址输入框那么方便。