4

わかりました、いくつかのことを試しましたが、ここで立ち往生しています...

私が扱っているHTMLは次のとおりです。

<div class="required">
<label for="paysys_idworldpay" class="labelRadio">
<input type="radio" value="worldpay" name="paysys_id" id="paysys_idworldpay" class="inputRadio"/>
<b>WorldPay</b></label>
<label for="paysys_idoffline" class="labelRadio">
<input type="radio" value="offline" name="paysys_id" id="paysys_idoffline" class="inputRadio"/>
<b>Paypal</b></label></div>

<div class="required">
<label for="email">Email Address</label>
<input type="text" value="" name="email" class="required email inputText" id="email" /></div>

これは、このフォームの validate() 関数で取得したコードです。

    errorElement: 'p',
errorClass: 'error',
errorPlacement: function(error, element) {
    error.insertBefore(element.prev());
    element.parent().addClass('error');
},
success: function(label){
    label.removeClass('error');
    label.parent().removeClass('error');
}

さて、上記のフォームの「email」のようなフィールドでは問題なく機能します(段落を挿入し、div をラップするクラスに「error」を追加するとともに、class="error" を割り当てます)...しかし、ラジオ ボタンは同じようには機能しません。「エラー」クラスを周囲のラベルに追加し、エラー クラスを含む段落を挿入することさえしません。なんで?

ここで何が欠けている/間違っていますか?

また、「成功」部分に追加された段落を実際に削除するにはどうすればよいですか? 現時点では、クラス属性から「エラー」が削除され、入力フィールドに文字が入力されるたびに、次のような別の空の段落が追加されます。

<p generated="true" class=""/>

そのため、各フィールドのすべてのdivにそれらの束ができてしまいます(入力された文字数に応じて)...もう一度、何が欠けていますか?

4

2 に答える 2

3

完全な検証機能と、それがフォームにどのように接続されているかを投稿すると役立ちます。

それにもかかわらず、私はいくつかのことを指摘できると思います:

ラジオ ボタンはラベルの内側にラップされ、電子メールの入力はそのラベルの横にあります。あなたのコードは次を指定します:

 error.insertBefore(element.prev());

これは、<input> 要素の前の隣接要素の前にエラー DIV を挿入することを意味します。ラジオ ボタンには先行する隣人がなく、ラベル要素内に単独で存在します。コードを次のように変更する必要があります。

error.prependTo(element.parents("div.required")).addClass("errorMsg");

次に、何かが正常に検証されたときに <P> タグを削除するには、remove() 関数を呼び出す必要があります。

error.remove(); // assuming "error" is the &lt;P&gt; tag.

お役に立てれば。

于 2009-05-31T06:21:37.170 に答える
0

FireBugでデバッグを試みましたか? 使用中は、DOM インスペクターを使用して、ツリー構造が期待どおりであることを確認してください。

于 2009-05-31T01:40:31.763 に答える