我正在尝试清除输入字段的值,如果它包含某个值。
$('#registerajax_email:contains("yahoo.com")').text(function(){
$('#registerajax_email').val('');
});
我做错了什么?
答案 0 :(得分:4)
我认为问题是输入字段的值包含在value属性中,而不是元素的内容中。你需要一个属性选择器。
试试这个:
$('#registerajax_email[value*="yahoo.com"]').val('');
这是与值匹配的最慷慨的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("");
}
});
});
注意正在使用的正则表达式。因为更容易检查输入是否包含所需的字符串。