我正在建设移动设备。
我有一个包含输入类型编号的表单。 当设备语言设置为阿拉伯语时,每当我为此输入设置一个值时,它都会以阿拉伯数字显示。
如果我这样做:
document.getElementById('input-id')。value = 444
在用户界面中,我们可以看到输入的值为 444 ,相当于444的阿拉伯数字。
我在输入类型=“文本”中没有此问题,因为它显示了一个字符串,因此它不会转换它们。
我知道我可以使用输入类型文本,但我想保持与应用程序其余部分的一致性并使用输入类型编号
我在 Chrome , Safari 和 Firefox 中遇到此问题。
澄清:我不希望它将其翻译成阿拉伯数字。我该怎么做?
答案 0 :(得分:2)
HTML规范的section on the Number input
type个州:
注意:此规范未定义要使用的用户界面用户代理;我们鼓励用户代理商考虑什么才能最好地为用户提供服务。需要。例如,波斯语或阿拉伯语市场中的用户代理可能支持波斯语和阿拉伯语数字输入(将其转换为上述提交所需的格式)。同样,为Romans设计的用户代理可能会以罗马数字而不是十进制数字显示值;或者(更现实地)为法国市场设计的用户代理可能会在小数点前用数字和逗号之间的撇号显示值,并允许用户以这种方式输入值,在内部将其转换为上述提交格式。 / p>
这意味着它可以通过浏览器来确定哪些内容最能为用户提供服务。'需要&#34 ;.我想,唯一可以覆盖此方法的方法是将页面的语言设置为将٤٤٤
表示为444
的语言(例如英语)。要做到这一点,我们只需:
<body lang="en">
然而,再一次,这完全取决于浏览器决定是否坚持这一点。
答案 1 :(得分:1)
您只能为所需的输入指定语言属性, 例如
<input type="number" lang="en">
答案 2 :(得分:1)
对于所有具有文本类型的输入 使用jQuery库
var arabics = ['۰', '۱', '۲', '۳', '۴', '۵', '۶', '۷', '۸', '۹'];
var engs = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9'];
$(document).on('keyup', 'input[type=text]', function (e) {
var insideText = (e.key);
var index = arabics.indexOf(insideText);
if (index >= 0) {
var value = $(this).val();
value.substr(0, value.length - 1) != null ? value = value.substr(0, value.length - 1) + engs[index] : value = engs[index];
$(this).val(value);
}
});