如何使用JQuery在文本框中的每个逗号后自动插入空格?

时间:2011-01-16 04:52:17

标签: jquery user-input

我尝试使用jQuery编写脚本,假设在每个逗号“,”之后自动放置一个空格,以便分隔用户在输入字段中输入的数字序列。例如如果他们输入(45,68,95,23),当用户离开输入栏时,它变为(45,68,95,23)。

这是为了检查输入是否有逗号

$("#test").blur(function() { 
    if(this.value.indexOf(",") !== -1) {
        alert('got a comma');
    }
});

4 个答案:

答案 0 :(得分:7)

只需用逗号分隔输入值,修剪每个项目的空格,然后将结果数组与逗号和空格连接在一起。

$("#test").blur(function () {
  this.value = $.map(this.value.split(","), $.trim).join(", ");
});

答案 1 :(得分:6)

$('#test').blur(function(){
  $(this).val(function(i,oldValue){
    return oldValue.replace( /,\s*/g, ', ' );
  });
});

或者,少用jQuery:

$('#test').blur(function(){
  this.value = this.value.replace( /,\s*/g, ', ' );
});

答案 2 :(得分:0)

this.value=this.value.replace(/,/gim,', ');

答案 3 :(得分:0)

使用正则表达式,这会将每个逗号周围的空白规范化为一个U + 0020空格字符,此后文本框在更改值后失去焦点时发生。它还会从开头和结尾修剪空白(或逗号逗号):

$("#test").change(function() {
    this.value = this.value.replace(/\s*,\s*/g, ', ').replace(/^,?\s*|,?\s*$/g, '');
});

正则表达式也有助于告诉用户他的输入是否有效。 Try this demo

$("#test").focus(function() {
    $(this).removeClass('valid invalid');
}).blur(function() {
    this.value = this.value.replace(/\s*,\s*/g, ', ').replace(/^,?\s*|,?\s*$/g, '');
    if(/^(?:[\d.](?:, )?)*$/.test(this.value)) {
        $(this).addClass('valid');
    } else {
        $(this).addClass('invalid');
    }
});