2

Twitterブートストラップとjquery検証プラグインを使用しています

次のようなフォーム行があります。

<div class="form_row" >
<div class="control-group">
    <label class="control-label" for="input01">home phone</label>
      <div class="controls">
        <input type="number" class="span4" class="input-xlarge" id="home_phone" name="home_phone" value="<?php echo $this->property->home_phone ?>" rel="popover" data-content="Re-enter your home phone." data-original-title="homephone" >
        <input type="number" class="span4" class="input-xlarge" id="cell_phone" name="cell_phone" value="<?php echo $this->property->cell_phone ?>"  rel="popover" data-content="Re-enter your cell_phone." data-original-title="cell_phone" >
      </div>
</div>

検証後、firebug で確認すると、エラーのある入力の後に span.error が続きます。これらの入力を選択したいと思います。これまでのところ、私は持っています:

$.filter(function() { return $(this).next("span.error"); })

しかし、次のエラーが発生します。

TypeError: 要素が定義されていません [このエラーでブレーク]

要素の長さ === 1 を返しますか?

ここで手を貸してくれる人はいますか?

ありがとう、

明細書

4

3 に答える 3

4

これを試しましたか?

$("input").filter(function() { return $(this).next("span.error").length == 1; })
于 2012-08-20T20:34:58.413 に答える
0

これを試して:

$('input').filter(function(index) { return typeof($(this).next("span.error")!='undefined'); })
于 2012-08-20T20:41:45.477 に答える
0

単純に要素を選択してから、要素span.errorまでさかのぼって作業します。input

​var inputs = $('span.error').prev('input');

JS フィドルのデモ

ちなみに、このアプローチは ( Chromium 19 では) アプローチを使用するよりも (ごくわずかfilter()ではありますが) 高速です。明らかに、それはマイクロ最適化です。もちろん、 と をサポートするブラウザーを想定するdocument.querySelectorAll()previousElementSibling、ネイティブ DOM メソッドを使用した方がさらに高速です。しかし、正直なところ、私が期待していたほどではありません。

参考文献:

于 2012-08-20T21:01:32.673 に答える