编写IF语句的最佳方式

时间:2012-03-23 17:34:16

标签: jquery

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

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

此代码有效,但占用了大量空间。谢谢!

6 个答案:

答案 0 :(得分:6)

将您的条件合并为一个逻辑语句,如下所示:

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

爆炸符号(!)是NOT;它会反转逻辑,如果任何条件成功则返回false,如果没有成功则返回true。

答案 1 :(得分:3)

你可以用这个单线程来做到这一点:

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

答案 2 :(得分:1)

“最佳”和“最短”不一定相同。我相信“最佳”解决方案通常是最具可读性的。考虑到您的示例,您可以使用类似的内容(不需要if):

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

答案 3 :(得分:0)

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

答案 4 :(得分:0)

试试这个。

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

答案 5 :(得分:0)

你可以这样做:

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

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

如前所述,您应该更多地考虑代码的可读性和可维护性,而不仅仅是大小。