输入验证:删除退格键上的值

时间:2015-08-14 10:48:10

标签: jquery validation input

我遇到了一个问题;我的网页上有多个html输入框,甚至在多个表格列中,用户可以在其中编辑业务计算。

  1. 文本框支持正值和负值
  2. maxlength等等....
  3. 问题是当用户在任何文本框中输入值时;如果他打算输入另一个,他有四种方法可以清除价值。

    1. 退格或删除 - 正常工作
    2. ctrl A + delete - 正常工作
    3. ctrl A +退格 - 工作正常
    4. 使用鼠标左键单击并拖动它以选择所有文本 text + backspace / delete
    5. 第四种情况失败了。请帮助第四种情况。

      代码:

      <input type="text" id="tust"/>
      
      $(document).ready(function(){
      document.getElementById('tust').onblur = issueDes;    
      
      $("input").on("keyup keydown",function (e) {
                      if(this.value!='-')
                          while(isNaN(this.value))
                           this.value = this.value.split('').reverse().join('').replace(/[\D]/i,'').split('').reverse().join('');
      
                     });   
      });
      function issueDes() {
          $("#tust").val(this.value+"%");    
      }
      

      小提琴:  DEMO - MOST CLOSE I CAN RE-CREATE THIS SCENARIO

1 个答案:

答案 0 :(得分:1)

检测selction和keyCode。希望这对你有用。只有选定的值才会删除。

arr = [08,127,46];
$(document).ready(function(){

document.getElementById('tust').onblur = issueDes;    

$("input").on("keyup keydown",function (e) {
     var checkCode = $.inArray( e.keyCode, arr );
    if (window.getSelection) {
        var selectionRange = window.getSelection ().toString (); 
        if((selectionRange.length > 0) && (checkCode != -1)){
        var value = $("#tust").val();
            $("#tust").val(value.replace(selectionRange,""))
        }
    }

                if(this.value!='-')
                    while(isNaN(this.value))
                     this.value = this.value.split('').reverse().join('').replace(/[\D]/i,'').split('').reverse().join('');



               });   
});
function issueDes() {
    var currVal = this.value;    
    if(currVal != "" && currVal.indexOf("%") == -1){
    $("#tust").val(this.value+"%");    
    }
}

demo http://jsfiddle.net/farhanbaloch/awug6h9a/6/