3

一連の入力フィールドがあります。いくつかわからないので、クラスから値を取得する必要があります。この場合、クラスは.total.

bestresultから値を取得するテキスト フィールドですが、mysql手動で変更するか、他のテキスト フィールドの最大値で変更したいと考えています。

これがコードです。明らかに機能しませんが、私が何をしたいのかがわかります。

<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<title>Untitled Document</title>
</head>
<script src="http://code.jquery.com/jquery-latest.min.js"></script>
<script type="text/javascript">
$('input.total').change(function()
{
    var max = $('.total').max();
    $('#bestresult').attr("value", max);
});
</script>
<body>
<form>
<input type="text" name="bestresult" id="bestresult" class="total" value=""><br>
<input type="text" name="resultat[100][total]" class="total" value=""><br>
<input type="text" name="resultat[121][total]" class="total" value=""><br>
<input type="text" name="resultat[130][total]" class="total" value="">
</form>
</body>
</html>
4

2 に答える 2

3

解決策は非常に簡単です。これを試して:

$('input.total').change(function()
{
     var max = 0;

     $('.total').each(function(){
          if(parseFloat($(this).val()) > max ) {
               max = parseFloat($(this).val());
          }
     });

     $('#bestresult').val(max);
});

ただし、複数のテキストボックスがある場合は、パフォーマンスを向上させるために、変更イベントがトリガーされるたびに最大値を追跡して更新する必要があります。

    var max = 0;

    // get the max for the first time
    $(document).ready(function () {
        $('.total').each(function () {
            if (parseFloat($(this).val()) > max) {
                max = parseFloat($(this).val());
            }
        });

        $('#bestresult').val(max);
    });

    $('input.total').change(function () {
        if (parseFloat($(this).val()) > max) {
            max = parseFloat($(this).val());
        }

        $('#bestresult').val(max);
    });
于 2013-01-14T08:28:29.153 に答える
2

まず、changeイベントをバインドするときに要素を定義するために、本文の最後にスクリプトを配置する必要があります。

次に、入力をフィルタリングして、最大値を含むものを除外することをお勧めします。このセレクターを使用できます:input.total[id!=bestresult]

また、keyupイベントもバインドして、ユーザーが外部をクリックしなくても最大値が更新されるようにすることをお勧めします。

したがって、次のコードを使用できます。

$('input.total[id!=bestresult]').on('blur change keyup', function(){
    $('#bestresult').attr("value", Math.max.apply(null, $('.total[id!=bestresult]').map(function(){
        return parseFloat(this.value)}).slice().filter(function(i, v){return v==v})
    ));
});

デモンストレーション

于 2013-01-14T08:40:44.000 に答える