0

フォームに 2 つのフィールドがあり、どちらもページが読み込まれたときに同じ値を持つ入力ボックスで、1 つは非表示になっています。

ユーザーが送信を押したときにボックスをチェックしたいのですが、値が変わらない場合は、表示ボックスの値を "" (空の文字列) に設定したいと考えています。

これが私のコードです(一連の入力を繰り返し処理していますが、基本は私が説明したものです)

$(".edit_functional_area").submit(function() {        
    $(".value_shown").each(function(i, obj) {
        var hidden_obj = $(this).next();
        if (hidden_obj.val() == $(this).val() && $(this).val() != "") {
            alert($(this).val());

            $(this).val("");

            alert($(this).val());
        }
    });
});

視覚的には、フィールドは実際には空白になっていますが、サーバー上のコントローラー (これは Rails アプリにあります) では、パラメーターは値が設定されたままになります。

私が望むのは、サーバーに送信されるパラメーターでその値を空白にして、必要のないときにモデルがデータベースに値を追加しないようにすることです。

何か案は?

ありがとう

4

1 に答える 1

0

ついにこれが機能しました。

私が作成した方法がhtmlでIDの競合を引き起こしていたため、隠しフィールドを削除しました。代わりに、入力ボックスでデータ属性を使用して古い値を設定し、それを使用してjqueryで比較しました。

また、要素の値を変更するコマンドを変更して、変更を行うために val(value) ではなく attr(field, value) を使用する必要がありました。

$(".edit_functional_area").submit(function(event) {
    $(".value_shown").each(function(i, obj) {
        var data = $(this).attr('data');
        if (parseFloat(data) == parseFloat($(this).val()) && $(this).val() != '') {
            $(this).attr('value', '');
        }
    });
});

提案をありがとう!マックス

于 2012-07-31T18:54:27.083 に答える