在输入框中更改部分值

时间:2011-02-21 16:27:57

标签: jquery

有人可以帮我弄清楚是否有可能将输入的值的一部分用于输入字段并更改值。我要做的是确保正确输入地址。所以,如果有人投入:

111 Circleview Road它将改为111 Circleview Rd。

这是我正在尝试但没有运气,所以我不知道我是否做错了或者如果这不可能与jQuery

$("#address").blur(
function(){
  switch ($(this).val()){
    case 'Road':
    case 'road':
        $(this).replaceWith("Rd.");
    break;
    case 'Street':
    case 'street':
        $(this).replaceWith("St.")
    default:
        $(this).val();
    break;
   }
  }   
);

4 个答案:

答案 0 :(得分:1)

replaceWith不是您正在寻找的功能。试试这个:

var newValue = $(this).val().replace('Road', 'Rd.');
$(this).val(newValue);

编辑此外,Brian的回应也很重要。由于您的代码当前是结构化的,因此不会执行任何case语句。摆脱它,只使用这个正则表达式。

var newValue = $(this).val().replace(/road/gi, 'Rd.')
$(this).val(newValue)

答案 1 :(得分:1)

使用regualar expressions

$(this).val( $(this).val().replace(/Road/, "Rd.") );

答案 2 :(得分:1)

如果有人进入111 Circleview Road,$(this).val()将返回整个字符串,而不仅仅是'Road'或'Street'。

所以,不幸的是,我不确定switch语句在这里真的适合你。

您可能需要使用正则表达式来查找和替换文本。

答案 3 :(得分:1)

只需使用正则表达式来查找单词 - 它只是JavaScript中的字符串操作。

$("#myinput").blur(function(){ 
   this.value = this.value
       .replace(/[Rr]oad/g,'Rd.')
       .replace(/[Ss]treet/g,'St.');
});

示例:http://jsfiddle.net/jonathon/4Yuym/

您不需要在输入元素上使用$(this).val(),因为value是元素本机属性的一部分 - 因此您可以使用this.value来获取/设置。