Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript字符串替换在长度满足而不是instantanoeus之前不会生效_Javascript - Fatal编程技术网

Javascript字符串替换在长度满足而不是instantanoeus之前不会生效

Javascript字符串替换在长度满足而不是instantanoeus之前不会生效,javascript,Javascript,我有一个html元素,用于输入电话号码。它具有执行此操作的onkeyup和onkeydown事件: document.getElementById("phone").value = document.getElementById("phone").value.replace(/(\d{3})(\d{3})(\d{4})/, "$1-$2-$3"); 现在,当我使用它时,它工作得很好,但是它只在用户键入10个数字后进行更改我要寻找的是在用户键入时显示格式的即时更新 我不知道如何修改代码以使其正常

我有一个
html元素
,用于输入电话号码。它具有执行此操作的
onkeyup
onkeydown
事件:

document.getElementById("phone").value = document.getElementById("phone").value.replace(/(\d{3})(\d{3})(\d{4})/, "$1-$2-$3");
现在,当我使用它时,它工作得很好,但是它只在用户键入10个数字后进行更改我要寻找的是在用户键入时显示格式的即时更新


我不知道如何修改代码以使其正常工作。

您可以使用此常规表达式随时更新值:

document.getElementById("phone").value = document.getElementById("phone").value.replace(/(\d{3})(\d{0,3})(\d{0,4})/, "$1-$2-$3");

它会在键入时立即添加破折号并用数字填补空白

不确定,但这可能是因为
{3}
+
{3}
+
{4}
?请提供您的onkeydown和onkeydup函数以及html,以便更好地调试仅使用占位符属性如何?@Daenu这就是我需要帮助的地方。若要修改此项,不建议在输入时更改用户输入,因为这可能会导致一些混乱。但是,如果您真的想这样做,您需要更改您的正则表达式(
/(\d{3})(\d{3})(\d{4}/
),因为现在除非您有10位数字,否则它不会触发。