2012-09-14 7 views
8

मेरे पास एक फ़ंक्शन है जो फ़ील्ड को खाली होने पर फॉर्म में मान्य करता है।फ़ंक्शन के रिटर्न वैल्यू को कैसे चेक करें यदि सही या गलत

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() समारोह चलाता है कि, वहाँ है, भले ही खाली क्षेत्र है। मुझे लगता है कि अगर यह/अन्य स्थिति पर .. क्या यह पूरा करने का एक बेहतर तरीका है?

धन्यवाद।

+0

क्या कोई कारण है कि आप ValidateForm को दो बार बुला रहे हैं? –

+0

समस्या यह है कि, यदि मैं 'पोस्ट()' फ़ंक्शन पर 'ValidateForm();' शामिल नहीं करता हूं .. त्रुटि संदेश नहीं दिखाते हैं .. – Ken

+0

इसे पहले से ही अगर अंदर रखा जा रहा है। आपको इससे पहले इसे फिर से कॉल करने की ज़रूरत नहीं है। –

उत्तर

13
false != 'false' 

अच्छा उपायों के लिए, डाल डबल सत्यापन से बचने के लिए एक चर में मान्य होने का परिणाम और IF कथन में इसका उपयोग करें। इस तरह:

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

आप ('असत्य') में निर्मित नकारात्मक निरंतर (गलत) नहीं एक स्ट्रिंग के खिलाफ परिणाम की तुलना कर रहे

बस का उपयोग

if(ValidateForm() == false) { 

या बेहतर अभी तक

if(!ValidateForm()) { 

भी आप दो बार वैधफॉर्म को क्यों बुला रहे हैं?

+0

समस्या यह है कि, यदि मैं 'पोस्ट()' फ़ंक्शन पर 'ValidateForm();' शामिल नहीं करता हूं .. त्रुटि संदेश नहीं दिखाते हैं .. – Ken

0

ValidateFormboolean लौटाता है, string नहीं।
जब आप यह if(ValidateForm() == 'false') करते हैं, तो यह if(false == 'false') जैसा है, जो सत्य नहीं है।

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

@Blazemonger हाँ ... http: // jsfiddle।नेट/वीकेएचबीवाई/ –

1

गलत वाक्यविन्यास। आप एक बुलीयन की तुलना "स्ट्रिंग" या "सत्य" जैसी स्ट्रिंग से नहीं कर सकते। आपके मामले में, बस का परीक्षण यह उलटा है:

if(!ValidateForm()) { ... 

आप सकता लगातार झूठी खिलाफ परीक्षण, लेकिन यह नहीं बल्कि बदसूरत और आम तौर पर पर सिकोड़ी है:

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

आप, जैसा कि आप ऊपर हैं ValidateForm() दो बार कॉल करने के लिए की जरूरत नहीं है। तुम बस

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

कर सकते हैं मुझे लगता है कि इस मुद्दे का समाधान होगा ऊपर के रूप में यह अपने स्ट्रिंग बराबर 'false' की तुलना true/false तरह दिखता है।

+0

समस्या यह है कि, यदि मैं 'पोस्ट()' फ़ंक्शन पर 'ValidateForm();' शामिल नहीं करता हूं .. त्रुटि संदेश नहीं दिखाते हैं .. – Ken

+0

आपके उदाहरण में यदि कथन हमेशा होगा झूठा, क्योंकि आपका फ़ंक्शन सत्य या गलत लौटाता है, यह कभी भी 'झूठी' वापस नहीं लौटाएगा। अपने कोड से सिंगल कोट्स को हटाएं जो 'झूठी' हैं और यह काम करेगा। हालांकि, मैंने जो सुझाव दिए हैं, वे आपके कोड को संबोधित करेंगे - पता है कि आपके कोड को ठीक करने के बाद भी। – JDandChips

+0

कुछ पर लम्बाई का उपयोग करना जो अनिर्धारित किया जा सकता है खतरनाक है। जब यह वास्तव में अपरिभाषित है, तो यह त्रुटि को वापस कर देगा "अपरिभाषित लंबाई पर कॉल नहीं कर सकता" या ऐसा कुछ भी। इस विशेष मामले में देखना मुश्किल है क्योंकि यह पेज रीफ्रेश करेगा। – NoobishPro

संबंधित मुद्दे