如果输入包含使用jquery的特定字符串,如何检查和替换值?

时间:2010-11-22 16:03:03

标签: jquery

我正在尝试清除输入字段的值,如果它包含某个值。

$('#registerajax_email:contains("yahoo.com")').text(function(){
$('#registerajax_email').val('');     
});   

我做错了什么?

3 个答案:

答案 0 :(得分:4)

我认为问题是输入字段的值包含在value属性中,而不是元素的内容中。你需要一个属性选择器。

试试这个:

$('#registerajax_email[value*="yahoo.com"]').val('');

使用Attribute Contains Selector

  

这是与值匹配的最慷慨的jQuery属性选择器。如果选择器的字符串出现在元素的属性值中的任何位置,它将选择一个元素。

您正在使用的选择器(:contains()选择器)不会查看元素属性:

  

匹配文本可以直接显示在所选元素中,任何元素的后代中,或其组合中。

但是,由于您要按ID定位元素,因此您根本不需要使用属性选择器。很可能这个代码应该包含在一个事件中,正如Robert Koritnik建议的那样,你可以使用一个简单的indexOf检查字符串contains:

// Register event onBlur (you could also use change, or whatever event suited the situation)
$('#registerajax_email').blur(function() {
    // Does value contain yahoo.com?
    if ($(this).val().indexOf("yahoo.com") != -1)
    {
        // clear the value
        $(this).val("");
    }
});

答案 1 :(得分:2)

使用适当的事件处理程序,例如.change().blur().load()

$('#registerajax_email[val*="yahoo.com"]').load(function() {
   $(this).val('');
});

答案 2 :(得分:1)

页面加载功能

或:在页面生命周期中只执行一次

如果要在页面加载时清除输入框(如果它包含特定值)。然后检查您的输入是否具有特定值:

$(function(){
    $('#registerajax_email[value*="yahoo.com"]').val('');
});

甚至更好,因为它是一封电子邮件

$(function(){
    $('#registerajax_email[value$="yahoo.com"]').val('');
});

*表示包含,$表示结束。

用户填写数据

或:每次用户在输入中输入内容后进行检查

此输入值可能与输入电子邮件地址的用户有关。所以你的代码的主要问题是:当你调用jQuery函数时,你的输入不包含所需的值。您必须附加到blur事件以检查值。

$(function(){
    $("#registerajax_email").blur(function(e){
        var context = $(this); // store it because it's used multiple times
        if (/yahoo\.com/i.test(context.val()))
        {
            context.val("");
        }
    });
});

注意正在使用的正则表达式。因为更容易检查输入是否包含所需的字符串。