0

私はこのような単純なインクリメント関数を手に入れました:

  $(function(){
    $("#inc").click(function(){
        var value = parseInt($(":text[name='ice_id']").val()) + 1;
        $(":text[name='ice_id']").val(value);
    });
    $("#dec").click(function(){
        var value = parseInt($(":text[name='ice_id']").val()) - 1;
        $(":text[name='ice_id']").val(value);
    });
});

ice_idテキストフィールドはフォーム内に埋め込まれています

<form id="masterSubmit" name="masterSubmit" action="" method="post">
     <td><input id="ice_id" type="text" name="ice_id" size="16" maxlength="15"></td>
</form>

ここでインクリメントしようとすると、数値は正常にインクリメントされますが、次の奇妙な動作が表示されます。サイトが「更新」され、テキストフィールドのコンテンツが失われます。フォームタグをコメントアウトすると、この動作はなくなります...残念ながら、フォームタグはAJAX送信に必要です。

この問題を回避する方法はありますか?

ヒントとよろしくお願いします

ダニヤル

4

2 に答える 2

3

ただreturn false;

$(function(){
    $("#inc").click(function(){
        var value = parseInt($(":text[name='ice_id']").val()) + 1;
        $(":text[name='ice_id']").val(value);
        return false;
    });
    $("#dec").click(function(){
        var value = parseInt($(":text[name='ice_id']").val()) - 1;
        $(":text[name='ice_id']").val(value);
        return false;
    });
});

コードを次のように改善することもできます。

$(function(){
    $("#inc").click(function(){

        $(":text[name='ice_id']").val(function(index, value) { return value++; });
        return false;

    });
    $("#dec").click(function(){

        $(":text[name='ice_id']").val(function(index, value) { return value--; });
        return false;

    });
});
于 2010-04-30T08:15:33.353 に答える
0

You can also try out the jQuery Increment plugin. I designed it for just such a purpose. In addition to your "inc" & "dec" elements, you can add keyboard (U/D arrow) and mousewheel support to your form input elements

于 2010-04-30T15:51:58.707 に答える