首页 > 解决方案 > 尝试解析仅允许数字的脚本在 Internet Explorer 11 中不起作用

问题描述

我有这个脚本,它只允许目标输入中的数字,并防止在该输入中插入其他字符,这适用于所有浏览器,除了

Internet explorer 11。该错误作为语法错误出现在第 14 行。我怎样才能让它在 Internet Explorer 11 上运行?

控制台中的错误并没有给我太多信息,它只是用红色字母表示语法错误,它给了我这个链接https://docs.microsoft.com/en-us/scripting/javascript/misc/syntax-error-javascript所以换句话说,它并没有给我关于错误的真正有用的信息,所以我被困在那里。

  document.querySelector('#numbers-only').addEventListener('keypress',preventNonNumbersInInput);
	  function preventNonNumbersInInput(event){
		var characters = String.fromCharCode(event.which);
		if(!(/[0-9]/.test(characters))){
			event.preventDefault();
		}
	  }
	  
	  document.querySelector('#numbers-only').addEventListener('paste',pasteTest);
	  function pasteTest(event){
	   window.setTimeout(() => { //<-line 14
		 var characters =event.target.value;
		 window.setTimeout(() => {
			if(!(/^\d+$/.test(characters))){
				event.target.value = event.target.value.replace(/\D/g, '');
			 }
		 });
	   });
	  }
<input type="text" id="numbers-only">

标签: javascript

解决方案


你应该试试下面的代码。我做了一些改变。当我在文本字段中过去 char 时,它在 ie 11 中对我有用。告诉我您是否有任何疑问。

document.querySelector('#numbers-only').addEventListener('keypress',preventNonNumbersInInput);
    function preventNonNumbersInInput(event){
    var key = event.which || event.keyCode || 0;
      var characters = String.fromCharCode(key);
      if(!(/[0-9]/.test(characters))){
          event.preventDefault();
      }
    }

    document.querySelector('#numbers-only').addEventListener('paste',pasteTest);
    function pasteTest(event){
    
     window.setTimeout(function() { // change the declaration
       var characters =event.target.value;
                                             //remove inner settimeout()
          if(!(/^\d+$/.test(characters))){
              event.target.value = event.target.value.replace(/\D/g, '');
           }
       
     });
    }
<input type="text" id="numbers-only">


推荐阅读