0

テンプレートを追加した後、最初の入力を選択したいと思います(クラスは時間です)。

これを行う方法?

$.get('@Url.Action("Bonus")', function (template) {
                $("#bonuses").append(template);
                // I would like focused first input in template $(template).first().focus();
            });

テンプレート内の html:

<input autocomplete="off" name="BonusList.Bonuses.Index" type="hidden" value="3c6f7b63-cc96-4971-a5b5-2e4640ca97e5" />
<input class="time" id="BonusList_Bonuses_3c6f7b63-cc96-4971-a5b5-2e4640ca97e5__ID" name="BonusList.Bonuses[3c6f7b63-cc96-4971-a5b5-2e4640ca97e5].ID" type="hidden" value="0" /> 

3c6f7b63-cc96-4971-a5b5-2e4640ca97e5 - ランダムな GUID です

#bonuses には、この追加の前に多くの入力があることが重要です

4

3 に答える 3

0

入力 SO のタイプを変更することはできません。代わりに、(テンプレートで) CSS クラスを使用して非表示にしてから、表示することができます。(参考:jQueryで入力フィールドの型を変える

<input autocomplete="off" name="BonusList.Bonuses.Index" type="text" class="iamhidden" value="3c6f7b63-cc96-4971-a5b5-2e4640ca97e5" /><input id="BonusList_Bonuses_3c6f7b63-cc96-4971-a5b5-2e4640ca97e5__ID" name="BonusList.Bonuses[3c6f7b63-cc96-4971-a5b5-2e4640ca97e5].ID" type="text" class="iamhidden" value="0" /> 

CSS:

.iamhidden{display:none;}

およびそのためのセレクター: 2 つの入力の最初の 2 つを見つけ、それらが追加された最後の 2 つであることを考慮して、非表示クラスを削除し、それをフォーカスします (最後の 1 つから 2 つ):

$('#bonuses').find('input:last').prev().removeClass("iamhidden").focus();

このロジックが機能していることを示すために、非常に単純化されたフィドルを配置しました:http://jsfiddle.net/seAxW/

編集:コメントを反映するには、クラス「時間」のコメントに焦点を合わせます(まだCSSとタイプテキストが必要です)

$('#bonuses').find('input.time:last').removeClass("iamhidden").focus();

隠しクラスが追加された場合:「time」クラスと「iamhidden」クラスの間にスペースを入れるだけで、できます

<input autocomplete="off" name="BonusList.Bonuses.Index" type="hidden" value="3c6f7b63-cc96-4971-a5b5-2e4640ca97e5" />
<input class="time iamhidden" id="BonusList_Bonuses_3c6f7b63-cc96-4971-a5b5-2e4640ca97e5__ID" name="BonusList.Bonuses[3c6f7b63-cc96-4971-a5b5-2e4640ca97e5].ID" type="text" value="0" />
于 2013-01-23T14:01:35.943 に答える
0

以下のスニペットを使用できます

$(template).find('input:first').focus();

最初の入力がテキスト型ではなく、最初のテキスト型入力のみに焦点を当てる必要がある場合は、代わりに以下のコードを使用します

$(template).find('input[type=text]:first').focus();
于 2013-01-23T13:34:54.470 に答える
-1

これを試しましたか?

$.get('@Url.Action("Bonus")', function (template) {
    $("#bonuses").append(template);
    $("#bonuses").find('input:first').focus();
});
于 2013-01-23T13:34:01.843 に答える