1

サイトのカスタム キーワード フィールドを構築しようとしていますが、

ボタンをクリックして入力を追加する入力divホルダーがありますが、チェックします

$('div inputs').last().val().length < 3

3 より小さい場合は入力をシェイクし、それ以外の場合:

$('div inputs').last().after('<input type="text" />')

問題は次のとおりです。

$('div inputs').last().val()

常に最初の入力値を返します。何が間違っていますか?

デモ

4

3 に答える 3

2

入力を一番上にキャッシュしたので、常に同じ入力コントロールのセットを使用しています。

コールバック内で入力変数を定義すると、機能します。

$('body').on('click','#addkey',function(e){
    var inputs = $('#keysInput input');

    if(inputs.last().val().length < 3){
        $('#keysInput input').last().effect("shake", { times:1, distance: -5 }, 300);
    }else{
        console.log(inputs.last().val());
        $('#keysInput input').last().after('<input type="text" placeholder="type another keyword" />');            
    }
})
于 2012-06-08T20:52:26.913 に答える
1

このようなもの:デモ http://jsfiddle.net/pVJXM/5/

動作:3文字などを入力し+てクリックするたびに、最後に inout が追加されます。

複数回使用var inputs = $('#keysInput input:last');する代わりに使用し.last()ました:)それはあなたのためにトリックを行います。

それが役に立てば幸い、

コード

var cont = $('#keysInput');

var addBtn = $('#addKey');

$('body').on('keydown','#keysInput',function(e){

});

$('body').on('click','#addkey',function(e){

    var inputs = $('#keysInput input:last');

    if(inputs.val().length < 3){
        inputs.effect("shake", { times:1, distance: -5 }, 300);
    }else{
        console.log(inputs.last().val());
        inputs.after('<input type="text" placeholder="type another keyword" />');            
    }
})




​
于 2012-06-08T20:55:24.617 に答える
0

スクリプトの冒頭で次を選択しますinputs

var inputs = $('#keysInput input');

その後、スクリプトを最初に実行するときに、新しく作成されたフィールドを含まない特定の値セットを使用します。つまり、1 つのフィールド (最初の 1 つ) のみを含むように作業しますinputs

解決策は、値 (選択された入力のリスト) をこの変数に単純に再割り当てすることです。

于 2012-06-08T20:55:39.550 に答える