Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/477.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
防止Safari中输入焦点更改的Javascript_Javascript_Jquery_Forms_Safari - Fatal编程技术网

防止Safari中输入焦点更改的Javascript

防止Safari中输入焦点更改的Javascript,javascript,jquery,forms,safari,Javascript,Jquery,Forms,Safari,我使用以下代码段将破折号插入SSN输入字段。(代码段过去也被用来用*来屏蔽,所以这就是为什么该部分被注释掉的原因)。但是,此代码在Safari上不起作用。无论何时,只要您关注此代码所在的字段,就不能将焦点更改为任何其他字段,您的光标将永远卡在该字段中。有没有办法在不完全重写此代码段的情况下修复此问题 var value; var $ssn = $('#ssn'); var $ssnVal = $('#ssn-val'); String.prototype.replaceAt = functio

我使用以下代码段将破折号插入SSN输入字段。(代码段过去也被用来用*来屏蔽,所以这就是为什么该部分被注释掉的原因)。但是,此代码在Safari上不起作用。无论何时,只要您关注此代码所在的字段,就不能将焦点更改为任何其他字段,您的光标将永远卡在该字段中。有没有办法在不完全重写此代码段的情况下修复此问题

var value;
var $ssn = $('#ssn');
var $ssnVal = $('#ssn-val');

String.prototype.replaceAt = function(index, character) {
  return this.substr(0, index) + character + this.substr(index + character.length);
}

var ssn = {
  init: function() {
  this.bind();
},

bind: function() {
   $ssn.on('focus', this.syncInput)
    .on('input', this.syncInput)
    .on('change', this.syncInput)
    .on('blur', this.syncInput)
    .on('keydown', this.syncInput)
    .on('keyup', this.syncInput)
    .on('click', this.syncInput);
},

transformDisplay: function(val) {
  // Strip all non numbers
  var displayVal = val.replace(/[^0-9|\\*]/g, '');
  displayVal = displayVal.substr(0, 9);

  // Inject dashes
  if (displayVal.length >= 4) {
    displayVal = displayVal.slice(0, 3) + '-' + displayVal.slice(3);
  }

  if (displayVal.length >= 7) {
    displayVal = displayVal.slice(0, 6) + '-' + displayVal.slice(6);
  }

  // Replace all numbers with astericks
  // displayVal = displayVal.replace(/[0-9]/g, '*');

  return displayVal;
},

transformValue: function(val) {
  if (typeof value !== 'string') {
     value = "";
  }

  if (!val) {
     value = null;
     return;
  }

  var cleanVal = val.replace(/[^0-9|\\*]/g, '');
  cleanVal = cleanVal.substr(0, 9);

  for (i = 0, l = cleanVal.length; i < l; i++) {
    if (/[0-9]/g.exec(cleanVal[i])) {
      // console.log('replaced', i, cleanVal[i]);
      value = value.replaceAt(i, cleanVal[i]);
    }
  }

  value = value.substr(0, cleanVal.length);
},

syncInput: function() {
  var $input = $(this);
  var val = $(this).val();
  var displayVal = ssn.transformDisplay(val);
  ssn.transformValue(val);

  this.setSelectionRange(val.length, val.length);

  $input.val(displayVal);
  $ssnVal.val(value);

  // console.log('value set', displayVal);
}
};

ssn.init();
var值;
变量$ssn=$(“#ssn”);
变量$ssnVal=$(“#ssn val”);
String.prototype.replaceAt=函数(索引,字符){
返回this.substr(0,索引)+字符+this.substr(索引+字符.长度);
}
变量ssn={
init:function(){
这个。bind();
},
绑定:函数(){
$ssn.on('focus',this.syncInput)
.on('input',this.syncInput)
.on('change',this.syncInput)
.on('blur',this.syncInput)
.on('keydown',this.syncInput)
.on('keyup',this.syncInput)
.on('click',this.syncInput);
},
转换显示:功能(val){
//去掉所有非数字
var displayVal=val.replace(/[^0-9 |\\*]/g',);
displayVal=displayVal.substr(0,9);
//注入破折号
如果(displayVal.length>=4){
displayVal=displayVal.slice(0,3)+'-'+displayVal.slice(3);
}
如果(displayVal.length>=7){
displayVal=displayVal.slice(0,6)+'-'+displayVal.slice(6);
}
//将所有数字替换为星号
//displayVal=displayVal.replace(/[0-9]/g,'*');
返回displayVal;
},
转换值:函数(val){
如果(值的类型!=='string'){
value=“”;
}
如果(!val){
值=空;
返回;
}
var cleanVal=val.replace(/[^0-9 |\\*]/g',);
cleanVal=cleanVal.substr(0,9);
对于(i=0,l=cleanVal.length;i