当类型设置为数字时,聚合物纸张输入似乎无法通过允许的模式正确阻止小数点
Polymer paper-input doesn't seem to properly block decimal points via allowed-pattern when type is set to number
我正在使用 type="number" 的纸张输入。我希望这个输入是一个整数,因此只接受数字字符。因此,我将允许模式设置为 [0-9]。当输入集中在我的平板电脑上时,会出现一个数字键盘,这很完美。然而,那个键盘有一个小数点按钮,如果我点击它,小数点是允许的。更糟糕的是,如果在小数点后选择了另一个数字,整个输入值将被清除。
令我感到奇怪的是,如果我将输入类型从 "number" 更改为 "text",它会正常运行。出现完整的字母数字键盘,但只能键入数字。连小数点都被正确挡住,打不出来。这是我想要的行为,但我不希望出现字母数字键盘。我更喜欢数字键盘。
当输入类型设置为 "number" 时,我可以做些什么来阻止小数点字符?
这是一个代码示例。在我的平板电脑上,第一个输入 (type="number") 接受小数点。第二个输入 (type="text") 没有。理想情况下,我想要第二个输入的行为,但是第一个输入的数字键盘。
<!doctype html>
<html>
<head>
<link rel="import" href="../bower_components/paper-input/paper-input.html">
</head>
<body style="background:white">
<paper-input type="number" allowed-pattern="[0-9]" label="Does not block decimal point"></paper-input>
<paper-input type="text" allowed-pattern="[0-9]" label="Correctly blocks decimal point"></paper-input>
</body>
</html>
以防万一 helps/matters,我使用的是 Samsung Galaxy Tab 4。我还没有在其他设备上尝试过。我还使用 Cordova 将代码转换为 Android 应用程序。
这是由于带有 type="number"
的原生 input
元素处理输入的方式所致。如果您键入任何不正确的数字,例如任何带有尾随小数 1.
的内容,它将 return 一个空值(""
而不是 "1."
)。现在,实现了 paper-input
以在值更改时检查值,并在遇到不正确的值时将输入重置为上一个正确的值。但是,空值是一个正确的输入,所以它不会做任何事情。同样的行为也会导致这个 issue on Github.
我认为您无能为力。如果你想要数字键盘,你将无法在用户键入时阻止小数点。您可以在输入后清除输入。
我正在使用 type="number" 的纸张输入。我希望这个输入是一个整数,因此只接受数字字符。因此,我将允许模式设置为 [0-9]。当输入集中在我的平板电脑上时,会出现一个数字键盘,这很完美。然而,那个键盘有一个小数点按钮,如果我点击它,小数点是允许的。更糟糕的是,如果在小数点后选择了另一个数字,整个输入值将被清除。
令我感到奇怪的是,如果我将输入类型从 "number" 更改为 "text",它会正常运行。出现完整的字母数字键盘,但只能键入数字。连小数点都被正确挡住,打不出来。这是我想要的行为,但我不希望出现字母数字键盘。我更喜欢数字键盘。
当输入类型设置为 "number" 时,我可以做些什么来阻止小数点字符?
这是一个代码示例。在我的平板电脑上,第一个输入 (type="number") 接受小数点。第二个输入 (type="text") 没有。理想情况下,我想要第二个输入的行为,但是第一个输入的数字键盘。
<!doctype html>
<html>
<head>
<link rel="import" href="../bower_components/paper-input/paper-input.html">
</head>
<body style="background:white">
<paper-input type="number" allowed-pattern="[0-9]" label="Does not block decimal point"></paper-input>
<paper-input type="text" allowed-pattern="[0-9]" label="Correctly blocks decimal point"></paper-input>
</body>
</html>
以防万一 helps/matters,我使用的是 Samsung Galaxy Tab 4。我还没有在其他设备上尝试过。我还使用 Cordova 将代码转换为 Android 应用程序。
这是由于带有 type="number"
的原生 input
元素处理输入的方式所致。如果您键入任何不正确的数字,例如任何带有尾随小数 1.
的内容,它将 return 一个空值(""
而不是 "1."
)。现在,实现了 paper-input
以在值更改时检查值,并在遇到不正确的值时将输入重置为上一个正确的值。但是,空值是一个正确的输入,所以它不会做任何事情。同样的行为也会导致这个 issue on Github.
我认为您无能为力。如果你想要数字键盘,你将无法在用户键入时阻止小数点。您可以在输入后清除输入。