私は試した
$(":input:not(input[type=button],input[type=submit],button):visible:first")
しかし、何も見つかりません。
私の間違いは何ですか?
UPD:$(document).load()でこれを実行します
<script type="text/javascript">
$(window).load(function () {
var aspForm = $("form#aspnetForm");
var firstInput = $(":input:not(input[type=button],input[type=submit],button):visible:first", aspForm);
firstInput.focus();
});
</script>
デバッグでは、firstInputが空であることがわかります。
UPD2:Sharepointで実行されているASP.NETページにいます。
私はこれまでのところ、いくつかの要素については(固定のものについて)それらを見つけることができ、いくつかのものについては見つけないことを発見しました。 :(
JQueryコードは問題ありません。ウィンドウロードイベントではなく、準備完了ハンドラで実行する必要があります。
<script type="text/javascript">
$(function(){
var aspForm = $("form#aspnetForm");
var firstInput = $(":input:not(input[type=button],input[type=submit],button):visible:first", aspForm);
firstInput.focus();
});
</script>
更新
Karim79の例を試してみました(例に感謝します)、それはうまく動作します: http://jsfiddle.net/2sMfU/
これは上記の私の要約であり、私にとって完璧に機能します。情報をありがとう!
<script language='javascript' type='text/javascript'>
$(document).ready(function () {
var firstInput = $('form').find('input[type=text],input[type=password],input[type=radio],input[type=checkbox],textarea,select').filter(':visible:first');
if (firstInput != null) {
firstInput.focus();
}
});
</script>
JQuery 1.5.2以降、:text
はinput
属性が指定されていないtype
要素を選択するため、@ Mottieの回答よりも改善されています(この場合、type="text"
が暗黙指定されます)。
$('form').find(':text,textarea,select').filter(':visible:first')
これが私の解決策です。コードは従うのに十分簡単でなければなりませんが、ここにアイデアがあります:
コード:
function focusFirst(parent) {
$(parent).find('input, textarea, select')
.not('input[type=hidden],input[type=button],input[type=submit],input[type=reset],input[type=image],button')
.filter(':enabled:visible:first')
.focus();
}
次に、親要素またはセレクターでfocusFirstを呼び出すだけです。
セレクタ:
focusFirst('form#aspnetForm');
素子:
var el = $('form#aspnetForm');
focusFirst(el);
以下のコードを試してみてください...
$(document).ready(function(){
$('form').find('input[type=text],textarea,select').filter(':visible:first').focus();
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
<form>
<input type="text" />
<input type="text" />
<input type="text" />
<input type="text" />
<input type="text" />
<input type="submit" />
</form>