0

テキストボックスから整数を取得するコスト計算機を構築しています.2つの特定の数字の範囲内にある場合、フォームのコストフィールドにコストが渡されます。私はPHPを使用するつもりでしたが、ajax呼び出しを機能させるのに苦労しました.jQueryでこれまでに思いついたものは次のとおりです。

$("#message_wordcount").change(function() {
        var p;
        var service = $("#message_service").val();
        var wc=parseInt($("#message_wordcount").val(), 10);

        if($(service=="Critique")
        {
            if (wc<="1200") {
                var p=2.5;                  
             } else if (wc>"1200" && wc<="2500")    {
                var p=5;
             } else if (wc>"2500" && wc<="4000")    {
                var p=10;
             } else if (wc>"4000" && wc<="6500")    {
                var p=15;
             } else if (wc>"6500" && wc<="8000")    {
                var p=20;
             } else if (wc>"8000" && wc<="12000")   {
                var p=25;
             } else if (wc>"12000" && wc<="16000")  {
                var p=30;
             } else if (wc>"16000" && wc<="20500")  {
                var p=35;
             } else if (wc>"20500" && wc<="22500")  {
                var p=40;
             } else if (wc>"22500" && wc<="25500")  {
                var p=45;
             } else if (wc>"25500" && wc<="27000")  {
                var p=50;
             } else if (wc>"27000" && wc<="29999")  {
                var p=55;
             } else if (wc>"29999" && wc<="33600")  {
                var p=60;
             } else if (wc>"33600" && wc<="36100")  {
                var p=65;
             } else if (wc>"36100" && wc<="38700")  {
                var p=70;
             } else if (wc>"38701" && wc<="40700")  {
                var p=75;
             } else if (wc>"40700" && wc<="42700")  {
                var p=80;
             } else if (wc>"42700" && wc<="45000")  {
                var p=85;
             } else if (wc>"45000" && wc<="48000")  {
                var p=90;
             } else if (wc>"48000" && wc<="49500")  {
                var p=95;
             } else if (wc>"49500" && wc<="52000")  {
                var p=100;
             } else if (wc>"52000" && wc<="54500")  {
                var p=105;
             } else if (wc>"54500" && wc<="57000")  {
                var p=110;
             } else if (wc>"57000" && wc<="59999")  {
                var p=115;
             } else if (wc>"59999" && wc<="63000")  {
                var p=120;
             } else if (wc>"63000" && wc<="68000")  {
                var p=125;
             } else if (wc>"68000" && wc<="72000")  {
                var p=130;
             } else if (wc>"72000" && wc<="76000")  {
                var p=135;
             } else if (wc>"76000" && wc<="79999")  {
                var p=140;
             } else if (wc>"79999" && wc<="85999")  {
                var p=145;
             } else if (wc>"85999" && wc<="92000")  {
                var p=150;
             } else if (wc>"92000" && wc<="99999")  {
                var p=155;
             }  else if (wc>"99999" && wc<="105000")    {
                var p=160;
             }  else if (wc>"105000" && wc<="110000")   {
                var p=170;
             }  else if (wc>"110000" && wc<="115000")   {
                var p=180;
             }  else if (wc>"115000" && wc<="120000")   {
                var p=190;
             }  else if (wc>"120000" && wc<="125000")   {
                var p=200;
             }  else if (wc>"125000" && wc<="130000")   {
                var p=210;
             }  else if (wc>"130000" && wc<="135000")   {
                var p=220;
             }  else if (wc>"135000" && wc<="139999")   {
                var p=230;
             }  else if (wc>"139999" && wc<="150000")   {
                var p=240;
             }  else if (wc>"150000" && wc<="159999")   {
                var p=245;
             }  else if (wc>"159999" && wc<="170000")   {
                var p=250;
             }  else if (wc>"170000" && wc<="180000")   {
                var p=260;
             }  else if (wc>"180000" && wc<="185000")   {
                var p=270;
             }  else if (wc>"185000" && wc<="192000")   {
                var p=280;
             }  else if (wc>"192000" && wc<="199999")   {
                var p=290;
             }  else if (wc>"199999" && wc<="250000")   {
                var p=300;
             }
             $("#message_cost").val(p);
        }
     });

そして、ここに私のマークアップがあります:

<form action="<?php the_permalink(); ?>" method="post">
                <p><label for="name">Name: <span>*</span> <br><input type="text" name="message_name" value="<?php echo esc_attr($_POST['message_name']); ?>"></label></p>
                <p><label for="message_email">Email: <span>*</span> <br><input type="text" name="message_email" value="<?php echo esc_attr($_POST['message_email']); ?>"></label></p>
                <p><label for="message_service">Service: <span>*</span><br><select name="message_service"><option value="<?php echo esc_attr($_POST['message_service']); ?>Critique">Critique</option>
                    <option value="<?php echo esc_attr($_POST['message_service']); ?>Standard Edit">Standard Edit</option>
                    <option value="<?php echo esc_attr($_POST['message_service']); ?>Comprehensive">Comprehensive</option>
                </select></label></p>
                <p><label for="message_wordcount">Word Count: <span>*</span> <br><input  id="message_wordcount" type="text" name="message_wordcount" value="<?php echo esc_attr($_POST['message_wordcount']); ?>"></label> &nbsp <a href="#" id="cC">Calculate Cost</a></p>
                <p><label for="message_cost">Total Cost: <br><input id="message_cost" type="text" name="message_cost" value="<?php echo esc_attr($_POST['message_cost']); ?>" readonly></label></p>
                <p><label for="message_text">Message: <span>*</span> <br><textarea type="text" name="message_text"><?php echo esc_textarea($_POST['message_text']); ?></textarea></label></p>
                <p><label for="message_human">Human Verification: <span>*</span> <br><input type="text" style="width: 60px;" name="message_human"> + 3 = 5</label></p>
                <input type="hidden" name="submitted" value="1">
                <p><input type="submit"></p>
              </form>

ただし、wordcount ボックスが変更されても何も起こらないようです。関数をフォームに統合する前に価格を返すことができました。

助けていただければ幸いです、ありがとう

4

2 に答える 2

1

以下のフィドルを確認してください。これがお役に立てば幸いです

文字列数を取得するには -デモはこちら 単語数を取得するには -デモはこちら

parseInt の代わりに文字列の長さを取得し、change 関数の代わりに keyup 関数を提供します。

JSはこちら

$("#message_wordcount").keyup(function() {
    var p;
    var wc=$("#message_wordcount").val().length; 
    if (wc<="1200") {
        var p=2.5;                  
    } else if (wc>"1200" && wc<="2500")    {
        var p=5;
    } else if (wc>"2500" && wc<="4000")    {
        var p=10;
    } else if (wc>"4000" && wc<="6500")    {
        var p=15;
    } else if (wc>"6500" && wc<="8000")    {
        var p=20;
    } else if (wc>"8000" && wc<="12000")   {
        var p=25;
    } else if (wc>"12000" && wc<="16000")  {
        var p=30;
    } else if (wc>"16000" && wc<="20500")  {
        var p=35;
    } else if (wc>"20500" && wc<="22500")  {
        var p=40;
    } else if (wc>"22500" && wc<="25500")  {
        var p=45;
    } else if (wc>"25500" && wc<="27000")  {
        var p=50;
    } else if (wc>"27000" && wc<="29999")  {
        var p=55;
    } else if (wc>"29999" && wc<="33600")  {
        var p=60;
    } else if (wc>"33600" && wc<="36100")  {
        var p=65;
    } else if (wc>"36100" && wc<="38700")  {
        var p=70;
    } else if (wc>"38701" && wc<="40700")  {
        var p=75;
    } else if (wc>"40700" && wc<="42700")  {
        var p=80;
    } else if (wc>"42700" && wc<="45000")  {
        var p=85;
    } else if (wc>"45000" && wc<="48000")  {
        var p=90;
    } else if (wc>"48000" && wc<="49500")  {
        var p=95;
    } else if (wc>"49500" && wc<="52000")  {
        var p=100;
    } else if (wc>"52000" && wc<="54500")  {
        var p=105;
    } else if (wc>"54500" && wc<="57000")  {
        var p=110;
    } else if (wc>"57000" && wc<="59999")  {
        var p=115;
    } else if (wc>"59999" && wc<="63000")  {
        var p=120;
    } else if (wc>"63000" && wc<="68000")  {
        var p=125;
    } else if (wc>"68000" && wc<="72000")  {
        var p=130;
    } else if (wc>"72000" && wc<="76000")  {
        var p=135;
    } else if (wc>"76000" && wc<="79999")  {
        var p=140;
    } else if (wc>"79999" && wc<="85999")  {
        var p=145;
    } else if (wc>"85999" && wc<="92000")  {
        var p=150;
    } else if (wc>"92000" && wc<="99999")  {
        var p=155;
    }  else if (wc>"99999" && wc<="105000")    {
        var p=160;
    }  else if (wc>"105000" && wc<="110000")   {
        var p=170;
    }  else if (wc>"110000" && wc<="115000")   {
        var p=180;
    }  else if (wc>"115000" && wc<="120000")   {
        var p=190;
    }  else if (wc>"120000" && wc<="125000")   {
        var p=200;
    }  else if (wc>"125000" && wc<="130000")   {
        var p=210;
    }  else if (wc>"130000" && wc<="135000")   {
        var p=220;
    }  else if (wc>"135000" && wc<="139999")   {
        var p=230;
    }  else if (wc>"139999" && wc<="150000")   {
        var p=240;
    }  else if (wc>"150000" && wc<="159999")   {
        var p=245;
    }  else if (wc>"159999" && wc<="170000")   {
        var p=250;
    }  else if (wc>"170000" && wc<="180000")   {
        var p=260;
    }  else if (wc>"180000" && wc<="185000")   {
        var p=270;
    }  else if (wc>"185000" && wc<="192000")   {
        var p=280;
    }  else if (wc>"192000" && wc<="199999")   {
        var p=290;
    }  else if (wc>"199999" && wc<="250000")   {
        var p=300;
    }
    $("#message_cost").val(p);
});

HTMLフォーム

<input  id="message_wordcount" type="text" name="message_wordcount" value="" />
<input id="message_cost" value="" />
于 2013-10-15T13:01:55.403 に答える
0

このchangeイベントは、フォーカスが入力フィールドから離れたときにのみトリガーされます。keyupフォーカスがまだ入力フィールドにある間に反応するために、代わりに次のようなものを使用できます。

@Liam が指摘したように、コードにも構文エラーがあります。最新のブラウザーのほとんどには、ランタイム エラーの追跡に役立つ開発者ツールが付属しています。たとえば、Chrome を使用している場合は、F12 を押して開発者ツールを起動できます。[コンソール] タブをクリックし、Web ページを更新して実行時エラーのリストを表示します。

于 2013-10-15T12:42:28.963 に答える