2011-12-04 2 views
1

私は、jQueryを使ってmix Multiple Selector with Multiple Attribute Selectorに可能性があることを知っています。実際、私はそれを使用しました。例えば が、これは正常に動作します:私の例ではjQueryを使用して複数のセレクタとフィルタを組み合わせることはできますか?

$('input[type="checkbox"][name^="selected"]:checked', theForm).length 

を、「theFormは、」私は属性ID =「Form1]を」持っている私のフォームを参照するために使用する「#1をForm1」を含む文字列です。

質問:これはjQueryフィルタと上記のものを混在させることができるのでしょうか?ここで は、コード例です:

var myVar = $('input[name^="modcc_"]', myForm).filter(...) 

私はこれを使用しようと、私はmyVarを の要素を取得することはないようですが、私は単にこのよう

var myVar = $('input[name^="modcc_"]').filter(...) 

「あるmyForm」を削除した場合、それは動作します。.. 。 なぜ?私は何か間違っているのですか?私は "myForm"変数が正しく "詰め込まれている"ことを知っています(フォームのID属性と一致する "#formMod"を含む文字列です)。そして、そのフォーム内に入力があり、そのIDを持つ唯一のものだと確信しています。

ありがとうございました!

P.S. この質問は回答しなかったone of my previous I made in a comment to the accepted answer to this questionから来ています。とにかく簡単なコメントの代わりに質問になるのは当然だと思っていたので...ここにあります!尋ねたとして、私はこちらのフォームのHTMLコードを入れ

-EDIT ...それに対する答えを持っていると思ってい:

<form action="..." method="post" id="formMod" name="formMod"> 
    <input type="hidden" name="catid" value="412" /> 
    <td width="8%">412</td> 
    <td>myName</td> 
    <td width="9%" style="white-space:nowrap; background-color:LightGoldenRodYellow;"> 
     <input id="modcc_icv" name="modcc_icv" type="text" value="10" maxlength="3" size="4" />. 
     <input id="modcc_dcv" name="modcc_dcv" type="text" value="25" maxlength="2" size="3" />% 
    </td> 
    <td width="18%" class="actions_col" style="background-color:LightGoldenRodYellow;"> 
     [ <a href="...">Annnulla</a> ] 
     <input type="submit" name="confirmMod" value="Salva" /> 
    </td> 
</form> 
+0

このようなことはありますか? filter( "[attr = a]、[attr = b]")。remove()。または.add()クラスを試すことができますhttp://api.jquery.com/add/ –

答えて

1

問題は、無効なマークアップを使用していることです。

<form>要素を<tr>要素の直接の子として使用することはできません。

は、あなたのHTMLはブラウザによってさまざまな方法で再加工され、<td> sが<tr>の子であるように<td>要素とその内容はおそらくformから削除されます。

私はChromeであなたのマークアップを入れると、これはそれをレンダリングする方法です:<form>要素が現在空であることを

<tr> 
     <!-- THE FORM HAS LOST ITS CONTENT --> 
    <form action="..." method="post" id="formMod" name="formMod"></form> 

    <input type="hidden" name="catid" value="412"> 
    <td width="8%">412</td> 
    <td>myName</td> 
    <td width="9%" style="white-space:nowrap; background-color:LightGoldenRodYellow;"> 
     <input id="modcc_icv" name="modcc_icv" type="text" value="10" maxlength="3" size="4">. 
     <input id="modcc_dcv" name="modcc_dcv" type="text" value="25" maxlength="2" size="3">% 
    </td> 
    <td width="18%" class="actions_col" style="background-color:LightGoldenRodYellow;"> 
     [ <a href="...">Annnulla</a> ] 
     <input type="submit" name="confirmMod" value="Salva"> 
    </td> 

</tr> 

注意してください。

だからこそ、<input>要素はドキュメント全体の検索を実行できますが、フォーム自体のコンテキストからは検索できません。

したがって、これは.filter()とは関係ありませんが、最初に任意の要素を選択していないという事実があります。

+0

@danicotra:もう1つのオプションは、 '

'タグを一切使用せず、 '$ .post()'を使って入力データを送信するだけです。もちろん、これはJavaScriptが有効な場合にのみ機能します。 – RightSaidFred

+0

(私はfirefoxを使用するので、正しいページソースを参照してください...)私はそれを恐れていた!私はそれが無効なxhtmlマークアップであることを知っていましたが、フォーム提出はafterallの働きをしています...原因は別のものである可能性がありますが、これはありません。テーブル行には、行/エントリの削除コマンドなどの編集可能な他のコンテンツまたはアクション(つまり、他の送信可能なフォーム)を含めることができます。 – danicotra

+0

ええと、$ .post()に頼るのは避けたいHTMLを書き直してもフォームがネストされたフォームなどを含まないようにすることができない場合、私はまだ私のニーズを満たすことができて幸運です私のフォーム入力に十分な別の名前を使用して、間違ったものを選択しないようにします(それでも、私は正しく検証するために自分のページが好きなので、私はそれらを作るために最善を尽くします) – danicotra

0

あなたは間違ってmyForm代わりのtheFormを使用していないことを確認していますか?

つまり、$(foo,bar)セレクタ構文では、barコンテキスト内でfoo要素を選択しています。コンテクストとしてmyFormを設定しても結果が得られない場合(選択なしの場合)は通常、間違ったコンテキストで選択しているか、指定されたコンテキストでセレクタに一致する要素がないことを意味します。

ここはsome more reading about itです。

+0

はい、私はその変数の名前と内容が正しいと確信しています...私もそれが私の入力になると思った彼らは幾分形の外にあったので捕まりませんでした...しかし、そうではありません! – danicotra

+0

これに合わせてHTMLを投稿してもよろしいですか? –

+0

done(編集済みの質問) – danicotra

関連する問題