ここに、空のフォームのフィールドを検証する関数があります。
_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条件にあると思います。これを達成するより良い方法はありますか?
ありがとうございました。
false != 'false'
適切な測定のために、検証の結果を変数に入れて二重検証を回避し、IFステートメントで使用します。このような:
var result = ValidateForm();
if(result == false) {
...
}
上記のように、ValidateForm()
を2回呼び出す必要はありません。あなたはできる
if(!ValidateForm()){
..
} else ...
上記のように問題を解決すると思いますtrue/false
から同等の文字列'false'
。
組み込みの負の定数(false)ではなく、文字列( 'false')と結果を比較しています
ただ使う
if(ValidateForm() == false) {
またはそれ以上
if(!ValidateForm()) {
また、なぜvalidateFormを2回呼び出すのですか?
間違った構文。ブール値を「false」や「true」などの文字列と比較することはできません。あなたの場合、それが逆であることをテストしてください:
if(!ValidateForm()) { ...
あなたはcould定数falseに対してテストしますが、それはむしろく、一般的に眉をひそめます:
if(ValidateForm() == false) { ...
ValidateForm
は、boolean
ではなく、string
を返します。
これを行うと、if(ValidateForm() == 'false')
はif(false == 'false')
と同じになりますが、これは正しくありません。
function post(url, formId) {
if(!ValidateForm()) {
// False
} else {
// True
}
}