2016-02-29 50 views
0

正确输入并提交表单域(#submit_btn)时,我的值将消失。当它们无效时,这不会发生。我试图用jQuery修复这个问题:如果存在类别,则在表单域中显示值

$('#submit_btn').click(function() { 
    if($("#register .wpcf7-mail-sent-ok") === true) { 
     $('#name-007').val('Full Name').show(); 
     $('#email-007').val('Email').show(); 
     $('#phone-007').val('Phone Number').show(); 
    } 
}); 

但它不工作。

编辑:#register被父母.wpcf7-mail-sent-ok是孩子

任何想法?

+0

'$( “#注册.wpcf7邮件发送的-OK”)'是一个jQuery包裹的对象,不能严格'==='评估为真或假。哪个元素是$(“#register .wpcf7-mail-sent-ok”)? – fcalderan

+0

使用.hasClass()内置函数 - .https://api.jquery.com/hasclass/ – Tasos

回答

1

从我的理解这应该为你工作:

$('#submit_btn').click(function() { 
    if($("#register .wpcf7-mail-sent-ok")) { 
     $('#name-007').val('Full Name').show(); 
     $('#email-007').val('Email').show(); 
     $('#phone-007').val('Phone Number').show(); 
    } 
}); 

检查$("#register .wpcf7-mail-sent-ok")true不会因为它的工作是一个DOM对象,它是真理-SY但不严格相同true

+0

您能解释为什么逻辑:true/false不起作用吗? – super11

+0

因为$(“#register .wpcf7-mail-sent-ok”)会返回与true(boolean)不同类型的数据的对象数组,所以数据类型不同,会导致如果条件成立,则使用strict ===。 –

+0

在JavaScript中,0是错误的,其他的都是真的(在我们的例子中是对象数组) – Sasha89

1

尝试这是:

$('#submit_btn').click(function() { 
    if($("#register .wpcf7-mail-sent-ok").length) { 
     $('#name-007').val('Full Name').show(); 
     $('#email-007').val('Email').show(); 
     $('#phone-007').val('Phone Number').show(); 
    } 
}); 

这是检查元素是否存在的“正确”方法。 不需要使用 “> 0” 或 “===”

+0

这是行不通的。 – super11

+0

我编辑了我最初的问题,请参阅。 – super11

0
$('#submit_btn').click(function() { 
    if($("#register").hasClass("wpcf7-mail-sent-ok") { 
     $('#name-007').show(); 
     $('#email-007').show(); 
     $('#phone-007').show(); 
    } 
}); 
+0

你错过了“如果'末尾':) – super11

+0

我认为'#寄存器'没有这个类,它有一个孩子与该类,按操作 –

+0

是的,注册有一个孩子,所以也许使用.children(“wpcf7-mail-sent-ok”)可以工作吗? – super11

相关问题