js中replace方法光标不跳最后(VX)

$("#wetg_Left_ipt2").bind("input",function() {

   //获取光标位置
  var Txt1Curs = $scope.getTxt1CursorPosition(this);

  var oldtexv = this.value;

  //格式化字符串4位分割,去掉非字母、数字、/和-以外的字符
  var texv = oldtexv.replace(/[^A-Za-z0-9/ - ] / g,‘‘).replace(/(\S{4})(?=\S)/g,‘$1 ‘);

  if (this.value.length > texv.length) {

    this.value = texv;

    //设置光标位置
    $scope.setTxt1CursorPosition(this, Txt1Curs - 2);

   } else if (texv != this.value) {

    this.value = texv;

    if ((Txt1Curs - 1) % 5 == 4) {

    //设置光标位置
    $scope.setTxt1CursorPosition(this, Txt1Curs);

  } else {

    //设置光标位置
    $scope.setTxt1CursorPosition(this, Txt1Curs - 1);

  }

  }

});

$scope.getTxt1CursorPosition = function(oTxt1) {

  oTxt1.focus();

  var cursurPosition = -1;

  if (oTxt1.selectionStart) { //非IE浏览器
  cursurPosition = oTxt1.selectionStart;

  } else { //IE
    var range = document.selection.createRange();

    range.moveStart("character", -oTxt1.value.length);

    cursurPosition = range.text.length;

  }

  return cursurPosition;

}

$scope.setTxt1CursorPosition = function(oTxt1, i) {

    var cursurPosition = -1;

    if (oTxt1.selectionStart) { //非IE浏览器
      //selectionStart我的理解是文本选择的开始位置
      oTxt1.selectionStart = i + 1;

      //selectionEnd我的理解是文本选择的结束位置
      oTxt1.selectionEnd = i + 1;

      oTxt1.focus();

     } else { //IE
      var range = oTxt1.createTextRange();

      range.move("character", i);

      range.select();

    }

 }

时间: 2024-10-09 20:22:49

js中replace方法光标不跳最后(VX)的相关文章

js中页面刷新和页面跳转的方法总结 [ 转自欢醉同学 ]

.js中cookie的基本用法简介 2009-12-15 js中页面刷新和页面跳转的方法总结 文章分类:Web前端 关键字: javascript js中页面刷新和页面跳转的方法总结 1.history.go(-1), 返回两个页面: history.go(-2); 2. history.back(). 3. window.history.forward()返回下一页 4. window.history.go(返回第几页,也可以使用访问过的URL) 例: <a href="javascri

js的replace方法

今天在项目中发现,js的replace方法,其实只是替换第一个匹配的字符: 比如 backstreetboy.replace('b','B') 得到的结果是Backstreetboy,只是替换了第一个匹配的字符,要想全部替换需要用正则表达式来替换,backstreetboy.replace(/b/g,'B'),这样就会全部替换了. ********************下面是从网上搜索到的资料********************** 第一次发现JavaScript中replace() 方法

js中replace用法

js中replace的用法 replace方法的语法是:stringObj.replace(rgExp, replaceText) 其中stringObj是字符串(string),reExp可以是正则表达式对象(RegExp)也可以是字符串(string),replaceText是替代查找到的字符串..为了帮助大家更好的理解,下面举个简单例子说明一下 Js代码 1.    <script language="javascript"> 2.    var stringObj=

原生js实现replace方法

今天看到有人提问js的replace方法怎么实现的,自己就试了试js手册里的String对象的介绍replace大概是这样: string.replace(regexp, replacement) 第一个参数:(regexp) 声明了要替换的模式的RegExp对象.如果该参数是一个字符串,则将它作为要检索的直接量文本模式,而不是首先被转换成RegExp对象. 第二个参数(replacement) 一个字符串,声明的是替换文本或生成替换文本的函数.详见描述部分. 返回值 一个新字符串,是用repl

js中Date 方法

Date (对象) Date 对象能够使你获得相对于国际标准时间(格林威治标准时间,现在被称为 UTC-Universal Coordinated Time)或者是 Flash 播放器正运行的操作系统的时间和日期.要使用Date对象的方法,你就必须先创建一个Date对象的实体(Instance). Date 对象必须使用 Flash 5 或以后版本的播放器. Date 对象的方法并不是静态的,但是在使用时却可以应用于所指定的单独实体. Date 对象的方法简介: ·getDate | 根据本地时

关于JS中的方法是否加括号的问题

js中的方法什么时候加括号什么时候不加括号呢,我们有时候经常就搞不清楚,记住下面这几点就好理解了. 1.函数做参数时都不要加括号. function fun(a){ alert(a); } function getE(fun,e){ fun(e); } getE(fun,3);//弹出3,这里把函数fun当成实参传入,所以就不用加括号了. 2.函数调用的时候是要加括号的,上面这个例子中getE这个函数调用的时候,不管有没有参数,都是要加括号的. 3.函数作为赋值符号右边的时候,无括号表示的是传递

【转载】JS中bind方法与函数柯里化

原生bind方法 不同于jQuery中的bind方法只是简单的绑定事件函数,原生js中bind()方法略复杂,该方法上在ES5中被引入,大概就是IE9+等现代浏览器都支持了(有关ES5各项特性的支持情况戳这里ECMAScript 5 compatibility table),权威指南上提到在ES3中利用apply模拟该方法的实现(JS权威指南中函数那章), 但无法真实还原该方法, 这也是真bind方法中的有趣特性. (原文这边理解有问题, 这段话的意思如果结合犀牛书上下文的意思, 再结合犀牛书中

解决js中post提交数据并且跳转到指定页面的问题总结

今天在开发中过程中遇到了这个问题,js中利用JQuery中的 $.post("url", id, function(){}); 这个方法是数据提交正常,但是后台处理完成之后跳转无法成功.经过分析,后台只是将要跳转的页面的html发回了前台,也就是说前台与后台利用JQuery的post方法只能发生数据的交互,并不能实现页面的跳转.所以,这就导致无法正常跳转. 解决方案: 1.将我们要提交的数据加入到指定的form表单中,在form表单中设置需要跳转的url和方法类型 post或get等

js中replace的应用

一: 准备知识: 1.定义:replace() 方法用于在字符串中用一些字符替换另一些字符,或替换一个与正则表达式匹配的子串. 2.语法: stringObject.replace(regexp/substr,replacement) 3.说明: 1)第一个参数可以是 正则 / 字符串 tips: 如果该值是一个字符串,则将它作为要检索的直接量文本模式,而不是首先被转换为 RegExp 对象. 2)第二个参数可以是 字符串 / 函数 tips: 函数的时候,每个匹配都调用该函数,它返回的字符串将