2012-03-23 5 views
0

IF 문의 한계와 가능성을 이해하는 데 어려움을 겪고 있습니다. 나는 단지 다음과 같은 가장 좋은 방법과 가장 짧은 방법을 알고 싶다. 기본적으로 입력이 비어 있거나 텍스트 영역에 여전히 기본값이 포함되어 있으면 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.')); 

뱅의 기호 NOT이다; 논리를 반대로하고 조건 중 하나라도 성공하면 false를 반환하고 성공하지 못하면 true를 반환합니다.

+3

음, 논리가 OP가 원하는 것과 반대라고 생각합니다. 고정되어 있습니다. val()! = ''&& $ ('# name') .Val()! = ''&& $ ('textarea'). ! == '여기에 의견을 입력하십시오.')' –

+0

맞아요 ... OP에 좋은 운동입니다. –

+0

정확히 내가 구한 것이 아니지만 그것이 내가 필요한 것입니다. 감사! – 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.'; 
관련 문제