2012-09-14 4 views
8

여기에는 비어있는 경우 양식의 필드를 확인하는 함수가 있습니다. true 또는 false 인 경우 함수의 반환 값을 확인하는 방법

function ValidateForm() 
{ 
    jQuery('span.error_msg').hide(); 
    var success = true; 
    jQuery("#shippingF input").each(function() 
     { 
      if(jQuery(this).val()=="") 
      { 
       jQuery(this).next().show(); 
       success = false; 
      } 
    }); 
    return success; 
} 

은 지금은 여기에 기능을 사용하고 싶었 :

function post(url,formId) { 
     jQuery("#process").html('<img src="<?php echo get_bloginfo('wpurl').'/wp-content/plugins/'.basename(dirname(__FILE__)).'/images/co/ajax-loader.gif'; ?>" alt="loading" title="ajax-loader" width="16" height="16" class="alignnone size-full wp-image-134">'); 
    jQuery.post(url, jQuery('#' + formId).serialize(), function(d) { 
     jQuery('html,body').animate({scrollTop: jQuery("#scrollhere").offset().top},'slow'); 
     jQuery("#response").html('<center><p style="height:820px"><span style="color:black;font-weight:bold;font: 11px arial,verdana,sans-serif;"><b>Loading available payment getaways..</b></span><br/><img src="<?php echo get_bloginfo('wpurl').'/wp-content/plugins/'.basename(dirname(__FILE__)).'/images/co/8-1.gif'; ?>" width="220" height="19" /></p></center>'); 
     jQuery("#response").load("<?php echo get_bloginfo('wpurl').'/wp-content/plugins/'.basename(dirname(__FILE__)).'/checkout_payment.php'; ?>", function() { Cufon.refresh(); }); 
     jQuery("#response").attr("style","height:1030px"); 
    }); 
} 

나는 그것을 시도하고 나는이 함께 제공됩니다.

function post(url,formId) { 
ValidateForm(); 
if(ValidateForm() == 'false') { 
    jQuery('html,body').animate({scrollTop: jQuery("#shippingF").offset().top},'slow'); 
} else { 
     jQuery("#process").html('<img src="<?php echo get_bloginfo('wpurl').'/wp-content/plugins/'.basename(dirname(__FILE__)).'/images/co/ajax-loader.gif'; ?>" alt="loading" title="ajax-loader" width="16" height="16" class="alignnone size-full wp-image-134">'); 
    jQuery.post(url, jQuery('#' + formId).serialize(), function(d) { 
     jQuery('html,body').animate({scrollTop: jQuery("#scrollhere").offset().top},'slow'); 
     jQuery("#response").html('<center><p style="height:820px"><span style="color:black;font-weight:bold;font: 11px arial,verdana,sans-serif;"><b>Loading available payment getaways..</b></span><br/><img src="<?php echo get_bloginfo('wpurl').'/wp-content/plugins/'.basename(dirname(__FILE__)).'/images/co/8-1.gif'; ?>" width="220" height="19" /></p></center>'); 
     jQuery("#response").load("<?php echo get_bloginfo('wpurl').'/wp-content/plugins/'.basename(dirname(__FILE__)).'/checkout_payment.php'; ?>", function() { Cufon.refresh(); }); 
     jQuery("#response").attr("style","height:1030px"); 
    }); 
} 
} 

문제는 검증 노력하고 있습니다 .. 그러나, .post() 기능은 빈 필드가 있음에도 불구하고 실행한다는 것입니다. 나는 if/else 조건에서 그것을 추측한다. 이것을 달성하기위한 더 좋은 방법이 있는가?

감사합니다.

+0

ValidateForm을 두 번 호출하는 이유가 있습니까? –

+0

문제는'Post()'함수에'ValidateForm();'을 포함하지 않으면 오류 메시지가 나타나지 않는다는 것입니다. – Ken

+0

이미 if 내부에서 호출되고 있습니다. 그 전에 다시 전화 할 필요는 없습니다. –

답변

13
false != 'false' 

넣어 귀하의 경우에는, 그냥 역의 테스트 변수에 대한 유효성을 검사하여 이중 유효성 검사를 피하고 IF 문에서 사용합니다. 이와 같이 :

var result = ValidateForm(); 
if(result == false) { 
... 
} 
3

당신은

if(!ValidateForm()) { 
더 나은 아직

그냥

if(ValidateForm() == false) { 

을 사용 ('거짓') 내장 부정적인 상수 (false)를 문자열에 대한 결과를 비교하거나하고

왜 validateForm을 두 번 호출합니까?

+0

문제는'post()'함수에'ValidateForm();'을 포함하지 않으면 에러 메시지가 나타나지 않는다는 것입니다 .. – Ken

0

ValidateFormstring이 아니라 boolean을 반환합니다.
if(ValidateForm() == 'false')을 입력하면 if(false == 'false')과 같지만 사실이 아닙니다.

function post(url, formId) { 
    if(!ValidateForm()) { 
     // False 
    } else { 
     // True 
    } 
} 
+0

@Blazemonger Yes ... http : // jsfiddle.net/vKHbY/ –

1

잘못된 구문입니다. 부울을 "false"또는 "true"와 같은 문자열과 비교할 수 없습니다.

if(!ValidateForm()) { ... 

당신 상수 거짓에 대한 테스트,하지만 오히려 추한 일반적으로 눈살을 찌푸리게의 수 : 좋은 조치

if(ValidateForm() == false) { ... 
8

위에서와 같이 ValidateForm() 번을 두 번 호출 할 필요가 없습니다. 당신은 내가 당신이 'false' 해당 문자열에 true/false을 비교처럼 보이는 위와 같이 그 문제를 해결할 생각

if(!ValidateForm()){ 
.. 
} else ... 

할 수 있습니다.

+0

문제는'Post()'함수에'ValidateForm();'을 포함하지 않으면 오류 메시지가 나타나지 않는다는 것입니다 .. – Ken

+0

예제에서 if 문은 항상 false, 함수가 true 또는 false를 반환하기 때문에 절대 false를 반환하지 않습니다. '거짓'주위의 코드에서 작은 따옴표를 제거하면 작동합니다. 그러나 내가 제안한 제안은 코드를 개선 할 것입니다. – JDandChips

+0

.length를 정의되지 않은 항목에 사용하는 것은 위험합니다. 실제로 정의되지 않은 경우 "정의되지 않은 길이를 호출 할 수 없습니다"또는 비슷한 오류를 반환합니다. 이 특별한 경우처럼보기가 힘들면 페이지 새로 고침이 발생합니다. – NoobishPro

관련 문제