0

jQuery を使用して動的に作成された要素を削除しようとしています。

これが私の例です:http://jsfiddle.net/4uxbu/

送信をクリックすると、必須フィールドが強調表示され、入力This field is required.後にテキストが表示されます。ユーザーが入力をクリックすると、赤いボックスが消えます。入力の下のテキストも消えるようにします。

メッセージは、次のコードを使用して設定されます。

$('#' + required[i]).after('<p style="font-weight:bold;" id="' + required[i] + '_error">' + emptyerror + '</p>');

そして、私はそれを削除しようとしました:

$('p#' + required[i] + '_error').remove();

しかし、私はそれを適切に機能させることができません。

Required以下の通りです

required = ["vidHeight", "title", "vidWidth", "vidLen", "thumb", "file"];

完全なコードについては、フィドルを参照してください。

ありがとう

4

3 に答える 3

3
$('p#' + required[i] + '_error').remove();

ええと、required[i] は意味がありません。なぜなら、i が定義されているループにいないからです。これを試して:

$('#' + $(this).attr("id") + '_error').remove();

参照: http://jsfiddle.net/4uxbu/1/

編集

エラーで複数回送信すると複数のエラーが表示される場合を処理するように更新されました: http://jsfiddle.net/4uxbu/2/

于 2012-08-20T14:22:41.733 に答える
0

名前を保存するのではなく、エラー メッセージの配列を保存します。追加される実際の項目の配列を保持すると、DOM クエリの数が減り、それらに対処する簡単な方法が得られます。コントロールをメッセージに関連付けるオブジェクトを作成することもできます。

于 2012-08-20T14:23:01.290 に答える
0

[i] は for ループにない間は影響を与えないため、次のように変更することをお勧めします。

$(this).removeClass("needsfilled");
$('#' + required[i] + '_error').remove();

もっと似たものに:

$(this).removeClass("needsfilled").next('#'+$(this).attr('id')+'_error').remove();
于 2012-08-20T14:26:05.413 に答える