0

入力テキストボックスがあります。ユーザーが入力からアイドル状態になった後、フォーム(以下のコードで機能します)とチェックマークの画像をポップアップしてフェードアウトするように送信します。imgが表示されるようにフェードアウト機能をテストしようとしていましたが、機能しないようです。

var timer = null;
$('.form_timer').keyup(function()
{
    if (timer) {
        clearTimeout(timer);
    }

    var test = $(this);
    timer = setTimeout(function() {
        test.next('img').fadeOut('slow');
        test.closest('form').submit();

    }, 700);
});

:EDIT#1 マークアップ

<div class="accordion">
    <div class="group">
        <form accept-charset="UTF-8" action="/tasks/2" class="simple_form edit_task" data-remote="true" id="edit_task_2" method="post" novalidate="novalidate"><div style="margin:0;padding:0;display:inline"><input name="utf8" type="hidden" value="&#x2713;" /><input name="_method" type="hidden" value="put" /><input name="authenticity_token" type="hidden" value="Fil9PitLB6ZhHtWwBOehbOBkq2yE6qikN5cU0zr4wRQ=" /></div>
            <h3><div class="input string optional"><label class="string optional control-label" for="name_2">Task Name</label><input class="string optional form_timer" id="name_2" name="task[name]" placeholder="New Task" size="50" type="text" value="somethingdd" /></div></h3>
            <div>
                <div class="input string optional" style="display: inline"><label class="string optional control-label" for="description_2">Description</label><input class="string optional form_timer" id="description_2" name="task[description]" size="50" type="text" value="blah123asdfgokkkkkasddadsdd" /></div><img alt="checkmark" class="form_checkmark" height="20px" src="/assets/checkmark.jpg" width="20px" />
            </div>
        </form>
    </div>
</div>        
4

2 に答える 2

0

親を使用するようにコードを更新してから、次に。.nextの動作は、予想とは異なるようです。テキストフィールドがdivなどの2レベルの深さである可能性があるため、私はまだこれを解決策として好きではありません...

var timer = null;
$('.form_timer').keyup(function()
{
    if (timer) {
        clearTimeout(timer);
    }

    var test = $(this);
    timer = setTimeout(function() {
        test.parent().next('.form_checkmark').fadeOut('slow');
        test.closest('form').submit();

    }, 700);
});

EDIT#1もう少し掘り下げました私が望んでいたことに対する簡単な解決策があるようには見えません。私が探しているものを知った後、他の誰かが投稿した解決策を見つけました。ここで見つかりました

于 2013-01-02T17:38:56.800 に答える
0

このマークアップで

<form method="get">
    <textarea class="form_timer">type in here</textarea>
    <img src="" width="200" height="150" style="display:block;background:#0c0;"/>
</form>​

あなたのコードは正常に動作します。ここで自分でテストしてくださいhttp://jsfiddle.net/bukfixart/AvsUH/

于 2013-01-02T16:55:43.007 に答える