我有一个<input type='number'/>
比较。
我如何才能使用onSubmit
(或其他选项,我可以自由地提出建议,但我需要它在用户键入时不影响用户,只有在用户完成时才影响用户)来完成以下所有操作?
1.删除所有前导零
1.删除所有结尾零
1.将字符串中的所有零替换为单个零(即所有多个零将转换为单个零,例如10020004将转换为10204
默认情况下,用户将能够输入多少,他将需要,前两个选项将始终是。第三个选项将取决于用户数据(为了这个问题,让我们假设如果first_user
设置为真,它将是)
到目前为止,我所尝试的是类似ref.value.replace('/^0+/', '')
的东西(使用^0$
对我来说效果不好,但条件3我甚至不知道如何实现),它在开始的零上大部分时间都很好,但我没有找到一种方法来处理结尾和所有中间的东西
澄清口渴选项:
基于first_user
状态(真或假),它将移除数字串的内部,如果其为真,则所有内部零将被转换为单一,如果其为假,则所有内部零将被转换为双零
6条答案
按热度按时间bpsygsoo1#
一个好的解决方案是实现一个简单的算法来完成你所需要的。
string.length-1
),直到找到一个非零的数字;这应该是一个非常简单的方法,并且比正则表达式更好用。对于
onSubmit
触发器,我认为它会工作得很好。我会使用onChange
并将其存储在一个隐藏字段中,但我认为onSubmit
会起到作用rt4zxlrg2#
我想你想多了,要用一个版本的东西替换多个东西,你只需要定位一个或多个
things
,然后在replace函数中,用一个thing
替换实际上并不需要指定开头或结尾,只需要指定一个或多个
0
,然后替换为一个0
即可试试这个:
对于删除前导和尾随
0
的,可能有一个更好的方法,但在我的脑海中,这是我会做的:v09wglhw3#
也许一个简单的解决方案是创建一个在提交时运行的转换函数。
将用户响应转换为字符串还可以使您更容易地删除开始和结束“0”。如果这没有帮助,请提供更多信息,好吗?希望这会有所帮助。
wfauudbj4#
你可以试试这个
hwazgwia5#
'/^0+/'
,这不是使用正则表达式的真正方法,你应该删除字符串引号,并把你的正则表达式写在正斜杠/
内,就像/regex/
一样g
修饰符的情况下,需要使用regex修饰符bfnvny8b6#
您可以通过一个
replace
调用来完成此操作。可以按以下顺序检查这三种情况:作为替换,输出由捕获组捕获的字符串。由于该组仅在第三种情况发生时捕获一个零,这实际上意味着所有其他零都将被删除。
我认为当数字正好为0时,必须引入该规则的一个例外。我猜您希望保留单个零。为了实现这一点,我将对前两个规则进行如下限制:
第三种情况现在也适用于输入仅由零组成的情况。
您可以使用
submit
事件,但使用change
事件可能也会很有趣:它不会在用户键入时触发,但会在用户"提交"值时触发,即当焦点移动到另一个元素、或选择另一个选项卡/窗口、或在输入小部件上使用向上/向下控件、或提交表单时...