1

私の問題を理解するには、最初にサンプルリンクを参照してください。

最初に値を分割し、分割された各値を入力テキストフィールドに表示します。

ここでサンプルを見ることができます。http://fahidmohammad.in/demo/sample/

サンプルリンク内---合計は分割される金額であり、分割払いの数は分割の数です。

私はあなたが何を考えているのか知っています...私は正確に何が必要ですか?

プロセスの第2段階は次のとおりです。

これで分割ができました。実際に必要なのは、分割された入力のいずれかから値を変更した場合、次の値または残りの値が合計金額と自動的に合計されることです。

例えば...

Total Amount = 9000
Number of installment = 3

Split1 = 3000
Split2 = 3000
Split3 = 3000

変更することにしたsplit1 to 4000場合、残りの分割は自動的に合計されます。

例えば..

Split1 = 4000
Split2 = 2500 [auto sum]
Split3 = 2500 [auto sum]

数学的にはプロセスを知っていますが、jquery cozでこれを達成するにはどうすればよいですか?分割の数はユーザー入力によって異なる場合があります。

従うべき正しい方法は何ですか?

4

2 に答える 2

2

これがあなたがする必要があることです...

まず、次のような要素を追加することから始めることをお勧めします

var numInst = $('input[name="ni"]').val();
var total = $('input[name="ta"]').val();
var payment = total / numInst;

for(var i = 0; i < total; i++){
    $('<input/>').attr({
        'type' : 'text',
        'name' : 'sum[]'
    }).val(payment).addClass('installment').appendTo('#inner');
}

私はこれをフリーハンドしているので、いくつかのエラーを与えるか、または取ります...しかし、それは、htmlとして文字列を追加するよりもはるかに効率的な方法です。

分割払いのonchangeイベントの場合:

$('.installment').change(function(){
    var numInst = $('input[name="ni"]').val();
    var total = $('input[name="ta"]').val();
    var otherPayment = (total - $(this).val()) / (numInst - 1);

    $(this).addClass('dontChange');

    $.each($('.installment'),function(i, val){
        if(!($(this).hasClass('dontChange')){
            $(this).val(otherPayment);
        }
    });

    $(this).removeClass('dontChange');
});

私が言ったように、私はこれをすべてフリーハンドで行いましたが、論理はしっかりしていると思います。一時的に手動で変更されたクラスにクラスを追加し、分割払いのクラステキストボックスをループして、合計から手動で入力された値を差し引いた値を、niに等しい1少ない支払いで割った値に変更します。

私が予測する唯一の問題は、手動で変更されたボックスにフラグを設定しないと、ユーザーが別の分割払いボックスを変更した場合に変更が上書きされることです。

簡単な修正は、$(this).removeClass('dontChange');を移動することです。分割払いのonchange関数からniおよびtaonchangeハンドラーの最後までの行。$(this)を$('。installment')に変更するだけです

それが役に立てば幸い!

于 2012-05-02T00:13:35.903 に答える
0

トリッキーな部分は、ユーザーが意図的にオーバーライドしたい分割フィールドを特定することです。UXの観点からは、分割フィールドをテキストにし、ユーザーが明示的にチェックするチェックボックスを追加することをお勧めします。「カスタム値」のようなもの。人が2番目のフィールドをカスタマイズすることにした場合、次のようになります。

split 1 =  2000   [ ] enter custom value
split 2 = [4000]  [X] enter custom value
split 3 =  2000   [ ] enter custom value

次に、a)分割数(分割払い入力の値に基づく)およびb)ユーザーがカスタム値に設定するために選択した分割数がわかります。

その場合、計算はTOTAL AMOUNT-(各カスタムフィールドが一緒に追加されます)/残りの分割フィールドになります。

于 2012-04-26T06:49:42.667 に答える