2012-03-23 10 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'属性などを使用しますか?) –

答えて

6

このような単一の論理文にあなたの条件を組み合わせる:

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

強打のシンボルをされていません。(!)いずれかの条件が成功するとfalseを返し、成功しない場合はtrueを返します。

+3

私は、論理がOPが望むものと逆になっていると思います。固定されています。 val()!= '' && $( '#name')。val()!= '' && $( 'textarea')。 !== 'ここにコメントを入力してください。') ' –

+0

あなたは... OPのための良い運動です。 –

+0

私が求めていたのはまさにwasntでしたが、私が必要としていました。ありがとう! – BrianP

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

「ベスト」と「最短」は必ずしも同じではありません。私は、 "最高の"ソリューションは、通常、最も読みやすいと信じています。

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

はこれを試してください:あなたの例を考えると、あなたはこのような何か(不要if)を使用することができます。

すでに述べたように
$("form").submit(function() { 
    var checkValue = function (selector, value) { 
     return $(selector).val() == value; 
    }; 

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

が、あなたはおそらくちょうどのサイズではなく、あなたのコードの可読性と保守性にもっと考える必要があります。

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

あなたはこのような何かを行うことができます。

関連する問題