gpt4 book ai didi

Javascript Replace() 函数在 jQuery UI 对话框中不起作用

转载 作者:行者123 更新时间:2023-12-02 16:16:09 24 4
gpt4 key购买 nike

我一直在使用 javascript replace() 来限制输入数字和单个小数,如下所示:

<input id="dialog-input" type="text" oninput="this.value = this.value.replace(/[^0-9.]/g, '').replace(/(\..*)\./g, '$1');" \>

这工作得很好,如果我可以从现有输入中获取对话框内容,如下所示:

<input id="dialog-input" type="text" oninput="this.value = this.value.replace(/[^0-9.]/g, '').replace(/(\..*)\./g, '$1');" \>
dialog = $( '#dialog-input' ).dialog({ });

但是,如果像这样将输入直接呈现为对话框的 jQuery 对象,则第二个正则表达式替换似乎无法获取捕获组,并且会发生只允许输入中单个字符的情况:

dialog = $( '<input type="text" oninput="this.value = this.value.replace(/[^0-9.]/g, \'\').replace(/(\..*)\./g, \'$1\');" \>' ).dialog({ });

为什么这在一种情况下有效,但在另一种情况下却失败?我有一种预感,我的正则表达式的某些部分需要转义,但我尝试了多种变体,但似乎没有任何效果。

最佳答案

在第二个正则表达式中双重转义句点:

'...replace(/(\\..*)\\./g, \'$1\');" \>'

我只是避免使用字符串:

$('<input type="text">').on('input', function() {
this.value = this.value.replace(/[^0-9.]/g, '').replace(/(\..*)\./g, '$1');
}).appendTo('body').dialog();

关于Javascript Replace() 函数在 jQuery UI 对话框中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29568742/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com