2012-03-23 123 views
0

我很难理解IF语句的限制和可能性。我只想知道写下面的最好和最短的方法。基本上我只想在输入为空或者textarea仍然包含默认值时返回false。这种形式是名称,电子邮件,电话和评论,电话是可选的,所以我不能只针对所有输入。编写IF语句的最佳方式

$('form').submit(function(){ 
    if ($('#email').val() == '') { 
     return false; 
    } else if ($('#name').val() == '') { 
     return false; 
    } else if ($('textarea').val() === 'Enter comments here.') { 
     return false; 
    } 
}); 

此代码有效,但占用一堆空间。谢谢!

+0

您如何记住每个控件的默认值? (新的''placeholder'属性,使用'data'属性等?) – 2012-03-23 17:35:27

回答

6

结合您的情况成一个单一的逻辑语句,就像这样:(!)

return !(($('#email').val() == '') 
    || ($('#name').val() == '') 
    || ($('textarea').val() === 'Enter comments here.')); 

的爆炸符号是一个不;它反转逻辑,如果任何条件成功则返回false,如果它们中的任何一个都不成功,则返回true。

+3

嗯,我认为逻辑与OP想要的相反。固定,我明白了。 '('#email')。val()!=''&& $('#name')。val()!=''&& $('textarea')。val() !=='在此输入评论')' – 2012-03-23 17:37:51

+0

正确的你是...... OP的良好运动。 – 2012-03-23 17:44:11

+0

完全不是我所要求的,但它是我所需要的。谢谢! – BrianP 2012-03-23 17:53:00

3

你可以用这一个班轮做到这一点:

$('form').submit(function(){ 
    if ($('#email').val() == '' || $('#name').val() == '' || $('textarea').val() === 'Enter comments here.') return false; 
});​ 
0
$('form').submit(function(){ 
if ($('#email').val() == '' || $('#name').val() == '' || $('textarea').val() === 'Enter comments here.') { 
    return false; 
} }); 
1

“最佳”和“最短”不一定相同。我相信“最好”的解决方案通常是最具可读性的。考虑你的例子,你可以使用类似的东西(没有if要求):

$('form').submit(function(){ 
    var emailSet = $('#email').val() != ''; 
    var nameSet = $('#name').val() != ''; 
    var placeholderReplaced = $('textarea').val() !== 'Enter comments here.'; 
    return emailSet && nameSet && placeholderReplaced; 
}); 
0

试试这个。

return !$('#email').val() 
     || !$('#name').val() 
     || $('textarea').val() !== 'Enter comments here.'; 
0

你可以做这样的事情:

$("form").submit(function() { 
    var checkValue = function (selector, value) { 
     return $(selector).val() == value; 
    }; 

    return checkValue("#email", "") 
     && checkValue("#name", "") 
     && checkValue("textarea", "Enter comments here."); 
}); 

前面已经提到的,你应该多想想你的代码的可读性和可维护性,而不仅仅是规模。