我正在尝试为仅接受数字和加号(+)的电话号码构建自定义文本输入; 所有其他角色需要丢弃并且不在场上显示.
我试图使用事件处理程序(onkeydown/onkeypress)并丢弃与其他键对应的输入.但是,我无法想出一种跨浏览器的方式来做到这一点.以下是我尝试过但不起作用的方法:
使用onkeypress事件并查看event.key以确定按下了哪个键:在Chrome上不起作用(请参阅http://caniuse.com/keyboardevent-key).有没有跨浏览器的解决方法?
使用onkeycode事件并查看event.keyCode:当我们需要按多个键来打印字符时不起作用(例如,英文键盘布局需要按Shift和=给+).此外,它允许显示!@#$%&*()等字符,因为按Shift和数字时会出现这些字符.(这是JavaScript代码中遵循的方法仅允许数字和加号,但它对我帮助不大;))
使用HTML模式属性:这似乎并不能阻止人们写出他们想要的任何内容.
谢谢!
在使用AngularJS 1.6处理JavaScript项目时,我有一个我想要过滤的字符串列表.例如,假设我的列表包含árbol,cigüeña,nido和tubo.
当用西班牙语过滤字符串时,如果我过滤了"u",我会期望出现cigüeña和tubo,这对西班牙人来说是最自然的结果.然而,在德语中并非如此 - 你和ü是不同的字母,因此德国人不希望在名单上看到cigüeña.所以我正在寻找一种方法让我的列表过滤知道用户的语言环境.
我碰巧有一个包含许多变音符号的对象,这样:
diacritics["á"] = "a";
diacritics["ü"] = "u";
// and so on...
Run Code Online (Sandbox Code Playgroud)
这就是我的过滤代码:
function matches(word, search) {
var cleanWord = removeDiacritics(word.toLowerCase());
var cleanSearch = removeDiacritics(search.toLowerCase());
return cleanWord.indexOf(cleanSearch) > -1;
}
function removeDiacritics(word) {
function match(a) {
return diacritics[a] || a;
}
return text.replace(/[^\u0000-\u007E]/g, match);
}
Run Code Online (Sandbox Code Playgroud)
上面的代码只删除了所有变音符号,所以我想让它知道用户的语言环境.因此,我将match()函数更改为:
function match(a) {
if (diacritics[a] && a.localeCompare(diacritics[a] === 0) {
return diacritics[a];
}
return a;
} …Run Code Online (Sandbox Code Playgroud) 我想知道是否可以在Phaser的给定时间动态加载资源,而不是在预加载函数中加载所有内容.原因很简单:我有一个有三个不同级别的游戏,所有游戏都有不同的背景歌曲; 所以我宁愿只在启动时加载一首歌来减少加载时间.
现在,我的预加载功能如下所示:
preload: function()
{
game.load.audio('pixel_world',
['assets/music/pixel_world_lo.ogg', 'assets/music/pixel_world_lo.mp3']);
game.load.audio('second_source',
['assets/music/second_source_lo.ogg', 'assets/music/second_source_lo.mp3']);
game.load.audio('reboot_complete',
['assets/music/reboot_complete_lo.ogg', 'assets/music/reboot_complete_lo.mp3']);
game.load.image('pickup', 'assets/img/pickup.png');
}
Run Code Online (Sandbox Code Playgroud)
我尝试将game.load.audio()之一调用移动到create函数:
create: function()
{
game.load.audio('pixel_world',
['assets/music/pixel_world_lo.ogg', 'assets/music/pixel_world_lo.mp3']);
// good things follow...
}
Run Code Online (Sandbox Code Playgroud)
但是,以下调用失败:
this.cache.isSoundDecoded(level.song)
// Phaser.Cache.isSoundDecoded: Key "pixel_world" not found in Cache.
song = game.add.audio(level.song);
// Phaser.Cache.getSound: Key "pixel_world" not found in Cache.
Run Code Online (Sandbox Code Playgroud)
你知道如何让这个工作,或任何其他方式来确保在游戏启动时没有加载这三首歌曲?谢谢!
我发现某个代码在Internet Explorer和Edge中失败了,但在Chrome和Firefox中似乎完美无缺:
var image = document.getElementById("myImage");
var canvas = document.getElementById("myCanvas");
var context = canvas.getContext("2d");
context.drawImage(image, 1, 0, 499, 278, 0, 0, 749, 417);Run Code Online (Sandbox Code Playgroud)
img {
width: 300px;
height: 200px;
}Run Code Online (Sandbox Code Playgroud)
<img id="myImage" src="https://image.ibb.co/bsANfm/emptyphoto.png" />
<canvas id="myCanvas" width="600" height="400"></canvas>Run Code Online (Sandbox Code Playgroud)
出于某种原因,CanvasRenderingContext2D.drawImage()调用在IE 11和Edge 40.15063.674.0中失败,我收到了IndexSizeError异常.根据MDN,如果画布或源矩形的大小为0,我应该只得到这个错误,这不是这里的情况.
任何人都可以了解我是否在这里做错了,或者是否有一些可用的解决方法?
我正在构建一个应用程序,它将能够生成包括任意文本数据的二维码。然而,这提出了一个挑战:我希望用户包含非 ASCII 字符,例如 \xc3\xa1 或 \xc3\xb6。
\n\n根据我收集的信息,QR 码的默认值是 ISO-8859-1,但 UTF-8 似乎是一个常见的选择(并且接受更广泛的字符,例如阿拉伯语或希伯来语字符,这些字符不会见 ISO-8859-1)。
\n\n然而,我链接的问题并没有回答对我来说至关重要的问题 - 我可以期望大多数现实世界的 QR 码阅读器(例如,智能手机或任何常用的 QR 阅读工具)能够可靠地读取带有 UTF 的 QR 码吗? 8编码?使用 ISO-8859-1 是否更安全?或者我应该假设在 QR 码中包含非 ASCII 字符会导致失败?
\n我试图找出如何设置要在 Angular 的 ngTemplateOutlet 中应用的自定义样式。我有两个组件,一个父组件和一个子组件,我将一个模板从父组件传递给子组件,然后使用 ngTemplateOutlet 打印该模板。我想要做的是使用父级和子级的样式呈现模板,而不仅仅是一种或另一种。
这是我的父组件的 HTML 的样子:
<child-component [template]="myTemplate">
<ng-template #myTemplate>
<p class="paragraph">Hello</p>
</ng-template>
</child-component>
Run Code Online (Sandbox Code Playgroud)
CSS:
.paragraph { color: red; }
Run Code Online (Sandbox Code Playgroud)
还有孩子:
<ng-container *ngTemplateOutlet="myTemplate"></ng-container>
Run Code Online (Sandbox Code Playgroud)
CSS:
.paragraph { font-weight: bold; }
Run Code Online (Sandbox Code Playgroud)
我想要发生的是看到带有红色背景和粗体字母的“Hello”,但是 Angular 的 shadow DOM 封装迫使模板忽略孩子的样式。
我知道我可以通过删除 DOM 封装来解决这个问题,但这不是一个选项,因为我想避免将 CSS 类添加到全局命名空间。所以我想知道是否有一种方法可以在 Angular 中干净地实现期望效果。
javascript ×4
html ×2
angular ×1
angularjs ×1
canvas ×1
css ×1
ng-template ×1
qr-code ×1
shadow-dom ×1
user-input ×1
utf-8 ×1
validation ×1