0

フォーム フィールドを含むテーブル行を追加するコードを作成し、動的に生成された各フォーム フィールドにサード パーティの SuggestBox 関数をバインドしようとしました。

<script type="text/javascript"> 
$(document).ready(function() {
    $('#form1').validationEngine();
    var newRowNum = 1;
    $(".addRow").click(function(){
        var $newTr = $("#tb1 tbody>tr:last").clone(true);
        $newTr.find('input[id^=foods]').unbind(jsonSuggest());  <== try to unbind the previouse jsonsuggest()
        //$newTr.find('.jsonSuggestResults').remove();
        $newTr.appendTo("#tb1 tbody");
        $('input[id^=foods]', $newTr).val('');
        $newTr.find('input[id^=foods]').each(function(){
            $(this).jsonSuggest(
                    function(text, wildCard, caseSensitive, notCharacter) {
                        rez = $.ajax({ 
                            type: 'GET', 
                            url: 'getFoodJSON.jsp',
                            data: 'foods=' + text,
                            dataType: 'json', 
                            async: false 
                        });
                        return eval(rez.responseText); 
                        },
                        { ajaxResults:true 
                        });
        });
        $newTr.find('input[id^=supplyDate]').each('id', function(){
            $(this).datepicker({dateFormat:'yy-mm-dd'});
        });
    });
});

ただし、SuggestBox の提案は重複を蓄積します。これは、7行目に何かを入力したときの結果です...

リンクテキスト

前の行+フォームフィールドで適用された関数のバインドを解除する方法を教えていただけませんか? ありがとうございました。

4

1 に答える 1

0

と書くことで、それが返す値を呼び出してバインドを解除しunbind(jsonSuggest())ます 関数がハンドラーメソッドを返すジェネレーターでjsonSuggestない限り(おそらくそうではありません)、それはあなたが望むものではありません。jsonSuggestもしそうなら、それが毎回同じハンドラーを返さない限り、それはまだあなたが望むものではありません。

あなたは(私が思うに)括弧なしjsonSuggestで書くことによって関数自体のバインドを解除したいです。unbind(jsonSuggest)

于 2009-11-11T03:10:16.753 に答える