1

Wordpress でカスタム フォームを作成しました (フォーム プラグインの使用を検討しましたが、これは 3 ステップのフォームであり、適切なプラグインは見当たりませんでした)。ここの手順に従ってフォーム検証プラグインを実装しようとしています: http://www.problogdesign.com/wordpress/validate-forms-in-wordpress-with-jquery/

これが私のWordPressテンプレートにあるものです:

<form name="lpsOrderForm" id="lpsOrderForm" method="post" class="contact-form" action="/payment-information/">
<input name=action type=hidden value=lps_calc>
<input name=page type=hidden value=2>
<input name=size type=hidden value=2>
<ul class=form-list>
<li><label>Paper</label></li>
<li><select name=paper id=paper onchange="lps_calcprice()">
<option value=4 >70# Gloss</option>
<option value=5 >7 Pt Reply/Uncoated</option>
</select></li>
</ul>
<ul class=form-list>
<li><label>Ink</label></li>
<li><select name=ink id=ink onchange="lps_calcprice()">
<option value=6 >Full Color Both Sides</option>
<option value=7 >Full Color One Side</option>
</select></li>
</ul>
<ul class=form-list>
<li><label>Bleed</label></li>
<li><select name=bleed id=bleed onchange="lps_calcprice()">
<option value=8 >Yes Bleed</option>
<option value=9 >No Bleed</option>
</select></li>
</ul>
<ul class=form-list>
<li><label>Fold</label></li>
<li><select name=fold id=fold onchange="lps_calcprice()">
<option value=0>None</option>
<option value=10 >Half-Fold</option>
<option value=11 >Quarter-Fold</option>
<option value=12 >Tri-Fold</option>
<option value=13 >Double Parallel-Fold</option>
</select></li>
</ul>
<ul class=form-list>
<li><label>Bindery</label></li>
<li><select name=bindery id=bindery onchange="lps_calcprice()">
<option value=0>None</option>
<option value=14 >One Perf</option>
<option value=15 >Two Perfs</option>
<option value=16 >Three Perfs</option>
<option value=17 >Four Perfs</option>
<option value=18 >Five Perfs</option>
<option value=19 >L Perf</option>
</select></li>
</ul>
<ul class=form-list>
<li><label>Quantity</label></li>
<li><select name=quantity id=quantity onchange="lps_calcprice()">
<option value=0>0</option>
<option value=20 >1000</option>
<option value=21 >2000</option>
<option value=22 >3000</option>
<option value=23 >4000</option>
<option value=24 >5000</option>
<option value=25 >10000</option>
<option value=31 >15000</option>
<option value=26 >25000</option>
<option value=27 >50000</option>
<option value=28 >75000</option>
<option value=29 >100000</option>
</select></li>
</ul>
    <ul class="form-list">
        <li><label>Company/Name:</label></li>
        <li><input class="fws4" type="text" name="lps_deliveryname" id="lps_deliveryname"/></li>
    </ul>
    <ul class="form-list">
        <li><label>Address Line 1:</label></li>
        <li><input class="fws4" type="text" name="lps_deliveryadd1" id="lps_deliveryadd1"/></li>
    </ul>
    <ul class="form-list">
    <li><label>Address Line 2:</label></li>
        <li><input class="fws4" type="text" name="lps_deliveryadd2" id="lps_deliveryadd2"/></li>
    </ul>
    <ul class="form-list">
        <li><label for="city">City:</label></li>
        <li><input class="small-tbox" type="text" name="lps_deliverycity" name="lps_deliverycity" id="lps_deliverycity"/></li>
       <li><label for="states">State:</label></li>
       <li><label for="zip">Zip:</label></li>
       <li><input class="small-tbox" type="text" name="lps_deliveryzip" id="lps_deliveryzip"/></li>
    </ul>
    <input class="checkout-button-blue" type="submit" /></fieldset>
</div>
<div class="clear"></div>
</form>

選択で onchange の呼び出しに気付くでしょう。関数は価格を計算し、AJAX を介して表示し、正常に動作しています。適切な add_action 呼び出しを使用して、プラグインでキューに入れられ、ローカライズされます。lps_calcprice 関数の JavaScript ファイルは次のとおりです。

function lps_calcprice(){
jQuery.post(myAjax.ajaxurl, jQuery("#lpsOrderForm").serialize()
,
function(response_from_the_action_function){
    jQuery("#lps_price").html(response_from_the_action_function);
}
);

}

そして、これが trace_validate_form と呼ぶプラグイン ファイルです。

<?php
/**
 * Plugin Name: Trace Validate Form
 * Description: Validate form data instantly with jQuery. Uses <a     href="http://bassistance.de/jquery-plugins/jquery-plugin-validation/">jQuery Form Validation</a> plugin by Jörn Zaefferer.
 * Version: 1.0
 * Author: Pro Blog Design
 * Author URI: http://www.problogdesign.com/
 * Lic
*/

/**
 * Add jQuery Validation script on posts.
 */
function trace_vc_scripts() {
//  if(is_single() ) {
        wp_enqueue_script( "jquery-validate",     WP_PLUGIN_URL.'/trace_validate_form/js/jquery.validate.min.js', array('jquery') );
    wp_enqueue_style(
        'jquery-validate',
        plugin_dir_url( __FILE__ ) . 'css/style.css',
        array(),
        '1.0'
    );
//  }
}
add_action('init', 'trace_vc_scripts');

/**
 * Initiate the script.
 * Calls the validation options on the comment form.
 */
function trace_vc_init() { ?>
    <script type="text/javascript">
    jQuery(document).ready(function($) {

        $('#lpsOrderForm').validate({
            rules: {

                lps_deliveryName: {
                    required: true,
                },

                lps_deliveryAdd1: {
                    required: true
                },

                lps_deliveryCity: {
                    required: true
                },

                lps_deliveryZip: {
                    required: true,
                    maxlength: 5,
                    digits: true
                },
            },
            messages: {
                lps_deliveryName: "Please enter a name for the sample/delivery address.",
                lps_deliveryAdd1: "Please enter a street address for the sample/delivery address.",
                lps_deliveryCity: "Please enter a city for the sample/delivery address.",
                lps_deliveryZip: "Please enter a 5 digit zip code for the sample/delivery address."
            }
        });
    });
</script>
<?php }
add_action('wp_footer', 'trace_vc_init', 999);
?>

フィールドに何も入力せずに [送信] をクリックすると、次のページに移動します。私はWordpressにかなり慣れていないので、これは簡単な修正である可能性が非常に高い. フォームアクションと関係があると思われますが、フォームの検証を機能させるために何に変更すればよいかわかりません。ソースを表示すると、ヘッドに JS ファイルが表示され、Firebug でエラーが発生しません。どんな入力でも大歓迎です!

*注: ステート入力は、Wordpress の PHP エバリュエーター プラグイン内からロードされていたため、意図的に削除しました。これ以上混乱させたくありませんでした。

4

1 に答える 1

1

このプロジェクトのために完了する必要のある他の作業に進み、フォームの検証に戻りました。入力に「class=required」を追加する必要があることがわかりました。今では魅力のように機能します! 馬鹿な...

于 2013-02-17T05:26:27.403 に答える