web-dev-qa-db-ja.com

jqueryセレクターは非表示フィールドから読み取ることができません

回答は別の質問に集約されます

次のjquery 1.3.2コードが機能します。

<input type="select" value="236434" id="ixd" name='ixd' />

<script>
console.log( $('#ixd') );
console.log( $("input[name='ixd']") );
</script>

コンソールの表示:

[input#ixd 236434]

[input#ixd 236434]

ただし、入力を「非表示」に設定すると、セレクターが機能しなくなります。手がかりはありますか?

<input type="hidden" value="236434" id="ixd" name='ixd' />

<script>
console.log( $('#ixd') );
console.log( $("input[name='ixd']") );
</script>

コンソールの表示:

[]

[]

14
Andy

それが失敗する理由がわかりません。私は仕事でも同じことを定期的に行っており、フォームフィールドが隠されているかどうかに関係なく機能します。

おそらくこれを試してください:

_<input type="hidden" value="236434" id="ixd" name='ixd' />

<script>
    console.log($("#xid").val())
</script>
_

これにより、非表示フィールドの値が取得されます。フォームフィールドから値を取得するには、.val()メソッドを使用する必要があります。

27
Mike Trpcic
_<input type="select" value="236434" id="ixd" name='ixd' />
_

それも有効なマークアップですか?

表示されている入力を選択すると、明示的に.val()を呼び出さなくても、その値が取得されますが、非表示の入力を選択すると、次のようには表示されません。

試してください:

_console.log( $('#ixd').val() );
console.log( $("input[name='ixd'][type='hidden']") );
_

そして

_console.log( $("input[name='ixd']").val() );
_
9
karim79

これは、コンソールの問題である可能性があります。私はテストを実行しましたが、それでも要素のインスタンスを取得しているようです。ここで何をしようとしているのか正確にはわかりません。

オブジェクトが見つかったかどうかを検証しようとしているだけの場合は、長さプロパティを確認してください

console.log( $('#xid').length );

フィールドの値を取得しようとしている場合は、valメソッドを使用します

console.log( $('#xid').val() );

最後に、ソリューションでDOMがまだ完全にロードされていない可能性があります。ロジックをdocument.ready呼び出し内にラップしていることを確認してください。

$(document).ready(function() {
    console.log( $('#xid').val() );
});
2
bendewey

ASP.Netでこれを実行している場合は、ブラウザーの[ソースの表示]オプションを使用して、実行時にコントロールのIDを確認してください。たとえば、コントロールがコンテンツページで宣言されている場合、コントロールIDが期待したものと異なる場合があります。この場合、マスターページによって駆動されるIDが割り当てられます。 jQueryでIDをハードコーディングする代わりに、ASP.Netインライン構文を使用してClientIDプロパティを参照できます。これにより、マスターまたはコンテンツページコントロール階層の変更からも保護されます。

そう...

$('#<%= myHiddenControl.ClientID %>').val();

...よりも良い選択でしょう...

$('#ctl00_ContentPlaceHolder1_ctl00_ContentPlaceHolder1_myHiddenControl').val();

...両方とも動作しますが。

1
JTIsALeaf

上記の作業のどれも試みない場合

$('#xid').attr('value');
0
Ryan Soury

非表示フィールドがネストされているため、$('#field_id').val()を実行しても値が返されないという問題がありました(body > div > form > ul > li > p)。 ulから移動すると、問題は解決しました。

0
Lenart