Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/78.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
Jquery 退格和Ctrl+;c(复制)不适用于输入字段(FireFox)_Jquery_Html_Regex_Frontend_Semantic Ui - Fatal编程技术网

Jquery 退格和Ctrl+;c(复制)不适用于输入字段(FireFox)

Jquery 退格和Ctrl+;c(复制)不适用于输入字段(FireFox),jquery,html,regex,frontend,semantic-ui,Jquery,Html,Regex,Frontend,Semantic Ui,我有一个使用语义UI输入字段开发的表单。我的要求是,输入字段应该只接受数字,消除空白,并且应该允许从输入字段ctrl+c进行复制 我做了一些研究,这个jQuery代码似乎符合我的要求,因为它在Chrome中运行良好。但是FireFox既不允许我使用退格也不允许我使用复制功能 这是我使用的jQuery代码 $("#checker").on("keypress keyup blur", function(event) { $(this).val($(this).val().replace(/[

我有一个使用语义UI输入字段开发的表单。我的要求是,输入字段应该只接受数字,消除空白,并且应该允许从输入字段ctrl+c进行复制

我做了一些研究,这个jQuery代码似乎符合我的要求,因为它在Chrome中运行良好。但是FireFox既不允许我使用退格也不允许我使用复制功能

这是我使用的jQuery代码

$("#checker").on("keypress keyup blur", function(event) {

  $(this).val($(this).val().replace(/[^\d ].+/, ""));
  if ((event.which < 48 || event.which > 57)) {
    event.preventDefault();
  }
});
$(“#检查器”)。打开(“按键向上模糊”,功能(事件){
$(this.val($(this.val().replace(/[^\d].+/,“”));
如果((event.which<48 | | event.which>57)){
event.preventDefault();
}
});

我如何让它在FireFox中像在chrome中一样工作?

您可以检测“ctrl”键,然后检测“c”键,在这种情况下,让事件按预期发生。否则,您将阻止该操作

下面是一个在FireFox中工作的非抛光示例。我相信这是可以改进的:

   $(function () {
        var ctrlDown = false,
            ctrlKey = 17,
            cKey = 67,
            backSpaceKey = 8;

        $("#checker").on("keydown keyup blur", function (event) {

            // Checks if 'ctrl' key was pressed and raises the flags
            if (event.which == ctrlKey) {
                ctrlDown = true;
            }

            // Checks if 'c' key was pressed, resets the ctrl key and continues to execute the copy action
            if (event.which == cKey) {
                ctrlDown = false;
            }
            else if ((event.which < 48 || event.which > 57) && (event.which != backSpaceKey)) {
                // Cancel any key and reset all flags
                event.preventDefault();
                ctrlDown = false;
            }

            $(this).val($(this).val().replace(/[^\d ].+/, ""));
        });
    });
$(函数(){
var ctrlDown=false,
ctrlKey=17,
cKey=67,
backSpaceKey=8;
$(“#检查器”)。打开(“向下键向上模糊”,函数(事件){
//检查是否按下了“ctrl”键并升起标志
if(event.which==ctrlKey){
ctrlDown=true;
}
//检查是否按下了“c”键,重置ctrl键并继续执行复制操作
if(event.which==cKey){
ctrlDown=false;
}
else if((event.which<48 | | event.which>57)和&(event.which!=backSpaceKey)){
//取消任何键并重置所有标志
event.preventDefault();
ctrlDown=false;
}
$(this.val($(this.val().replace(/[^\d].+/,“”));
});
});
如果希望其他键(如箭头键)被排除在预防之外,则可以将它们添加到“If”子句中,在该子句中我检查是否按下了“backspace”键,则我不阻止该操作


您还可以使用Regex来只过滤数字,而不处理所有其他键。这取决于你。我认为正则表达式的解决方案要好得多。

您可以使用单一的
正则表达式模式来只允许数字,而不需要阻止其他键号,它可以在Chrome和FireFox等上工作

$(“#检查器”)。打开(“按键输入模糊”,功能(事件){
var值=$(this.val();
值=值。替换(/\D+/,“”);
$(此).val(值);
});


效果很好。这正是我一直在寻找的答案,谢谢。代码运行得很好,但我在复制过程中发现了一个小问题(不允许我将输入复制到另一个输入字段)。。顺便说一句,谢谢你的帮助。正如我说的,这只是一个小例子,表明它可以做到:)很高兴能提供帮助!是的,这很有帮助。我真的很感激你的回答:)。。祝你有美好的一天。