簡體   English   中英

Javascript replace()函數在jQuery UI對話框中不起作用

[英]Javascript replace() function not working in jQuery UI Dialog

我一直在使用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();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM