如何使用jQuery将输入框中的逗号替换为点号?
解决输入字段逗号替换为点号的最佳方法
先帮你梳理下当前代码里的几个问题,再给出更靠谱的实现方案:
- 输入框这类表单元素的内容操作,得用
val()方法,而不是text()——text()是给普通文本节点用的,对输入框无效 - 你的
replace语法写错了:replace(','.'')里参数分隔少了逗号,而且默认replace只替换第一个匹配项,要替换所有逗号得用带全局标志的正则/g
下面是几种实用的实现方式:
方法1:用input事件(推荐)
input事件比keyup覆盖场景更全,能捕获粘贴、右键粘贴、拖拽文本等所有内容变更的情况,而keyup只在键盘按键抬起时触发,有遗漏。
jQuery(document).ready(function($){ const $targetInput = $("#field_ce5yi-other_2-otext"); $targetInput.on('input', function(){ // 把输入值里的所有逗号替换成点号,再赋值回去 const updatedValue = $(this).val().replace(/,/g, '.'); $(this).val(updatedValue); }); });
方法2:修正你原有的keyup版本
如果你更习惯用keyup,修正后的代码是这样的:
jQuery(document).ready(function($){ $("#field_ce5yi-other_2-otext").keyup(function(){ // 改用val(),同时修复replace的语法和全局替换逻辑 $(this).val($(this).val().replace(/,/g, '.')); }); });
额外优化:从源头阻止逗号输入(可选)
要是想直接不让用户输入逗号,可以结合keydown事件拦截,再配合input处理粘贴的情况:
jQuery(document).ready(function($){ const $targetInput = $("#field_ce5yi-other_2-otext"); // 拦截逗号按键 $targetInput.on('keydown', function(e){ if(e.keyCode === 188){ // 逗号的keyCode是188 e.preventDefault(); // 直接插入点号 $(this).val($(this).val() + '.'); } }); // 处理粘贴等非键盘输入的情况 $targetInput.on('input', function(){ $(this).val($(this).val().replace(/,/g, '.')); }); });
这样就能完美覆盖所有输入场景啦!
内容的提问来源于stack exchange,提问作者Daansk44
相关产品推荐
相关产品推荐

