javascript - 如何将它用于具有相同标签的多个输入
问题描述
我需要这个替换器通过一个选择器将它用于许多输入。现在我使用不同的选择器和相同的代码,只是选择器不同
var en = "qwertyuiop[]asdfghjkl;'zxcvbnm,./`QWERTYUIOP{}ASDFGHJKL:\"ZXCVBNM<>?~&";
var ru = "йцукенгшщзхъфывапролджэячсмитьбю.ёЙЦУКЕНГШЩЗХЪФЫВАПРОЛДЖЭЯЧСМИТЬБЮ,Ё?";
var alphabet = {};
for (var i = 0; i < en.length; i++) {
alphabet[en[i]] = ru[i];
}
var InputReciever = document.getElementById("InputReciever");
InputReciever.addEventListener("input", function() {
InputReciever.innerHTML = toRussianStr(this.value);
});
function toRussianStr(str) {
return str.replace(/\S/g, function(match) {
return alphabet[match] || match;
});
}
<div class="form__option">
<input placeholder="Город получателя" id="InputReciever" onfocus="this.placeholder=''" onblur="this.placeholder='Город получателя'" onkeydown="InputReciever.value=toRussianStr(InputReciever.value)" onchange="InputReciever.value=toRussianStr(InputReciever.value)"
type="text" class="InputReciever field" autocomplete="off" />
</div>
解决方案
input
将事件侦听器中的代码从 更改input.innerHTML
为input.value
。
这是解释差异的答案。
例如。
var en = "qwertyuiop[]asdfghjkl;'zxcvbnm,./`QWERTYUIOP{}ASDFGHJKL:\"ZXCVBNM<>?~&";
var ru = "йцукенгшщзхъфывапролджэячсмитьбю.ёЙЦУКЕНГШЩЗХЪФЫВАПРОЛДЖЭЯЧСМИТЬБЮ,Ё?";
var alphabet = {};
for (var i = 0; i < en.length; i++) {
alphabet[en[i]] = ru[i];
}
var input = document.querySelector("input");
input.addEventListener("input", function() {
input.value = toRussianStr(input.value);
});
function toRussianStr(str) {
return str.replace(/\S/g, function(match) {
return alphabet[match] || match;
});
}
<input class="input" type="text" placeholder="Город получателя"
autocomplete="off"/>
推荐阅读
- ios - SwiftUI - 在“onAppear”中更改属性在呈现时不会更改工作表
- python - 如何将 SQL 查询转换为 django ORM
- .net - 在 vb.net 中使用 Request.Url.AbsolutePath 时如何防止 xss
- python-3.x - 我是否使用循环、df.melt 或 df.explode 来实现扁平化数据框?
- vb.net - vb.net 我正在尝试调整控件(标签、文本框、richtextbox)的大小,使其成为包含给定字符串的最小正方形
- python - 'with' 语句在 kivy 中如何工作?
- wordpress - Heroku 应用程序名称重命名仍然引用旧应用程序 url
- android - 我如何从父项目中打开子库的活动
- php - 在ajax发布后下载生成的pdf
- python - Python SQLITE 不更新值