如何在丢失文本框焦点时删除所有出现的角色?

时间:2013-05-23 10:09:50

标签: javascript jquery

我需要在jquery中创建一个函数,一旦用户从控件中选中或完成在textbos中输入,就从字段中删除#字符,

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

}

首先,我不知道如何删除它,我应该在密钥中执行此操作吗?或者在另一个事件中?

3 个答案:

答案 0 :(得分: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
});

Here is a working fiddle

  • .val获取输入字段的值
  • .split字符串位于“#”上,然后.join位于“”
  • 放回元素
  • 发生在key up

答案 1 :(得分:1)

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

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

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

答案 2 :(得分:0)

您将需要使用在输入失去焦点时发生的blur event,然后只需更改可作为输入属性访问的value(对于jQuery包装器:{{ 3}}):

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