1

I need to create in jquery a function that once a user tabs out of a control or finishes typing in the textbos, removes the # character from the field,

 $('[id$=txtClient]').keyup(function (){

}

First I dont know how to remove it, and should I do it in the keyup? or in another event?

4

3 回答 3

7

干得好:

$('[id$=txtClient]').keyup(function (){
    var $el = $(this); // the text element
    var text = $el.val();
    text = text.split("#").join("");//remove occurances
    $el.val(text);//set it back on the element
});

这是一个工作小提琴

于 2013-05-23T10:11:34.787 回答
1

我不认为这keyup是你想要的事件。相反,我建议使用blur,它会跟踪元素何时失去焦点。否则用户将无法键入#,这可能会有些令人沮丧。然后您可以使用replace()删除#字符:

$('[id$=txtClient]').blur(function() {
     $(this).val( $this.val().replace(/#/g, '') );
});

函数中的代码将元素的文本设置为其现有文本,但每个都#使用正则表达式替换为空字符串。(感谢 Benjamin Gruenbaum 在我第一次使用 时指出了一个缺陷replace())。

于 2013-05-23T10:17:42.790 回答
0

您将希望使用输入失去焦点时发生的blur事件,然后只需更改value可以作为输入属性访问的事件(对于 jQuery 包装器:).val()

$("[id$=txtClient]").blur(function() {
    this.value = this.value.replace(/#/g, "");
});
于 2013-05-23T10:39:46.853 回答