Ошибка проверки jQueryЗамена и удаление элементов? - PullRequest
4 голосов
/ 31 мая 2009

Хорошо, я попробовал несколько вещей, но я застрял здесь ...

Вот 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" в приведенной выше форме (вставляет абзац и присваивает ему class = "error" вместе с добавлением "error" к классу в оболочке div) ... но для переключателей это работает не так - он добавляет класс «error» к окружающему ярлыку и даже не вставляет абзац с классом error. Почему?

Что я здесь упускаю / делаю неправильно?

Кроме того, как на самом деле УДАЛИТЬ добавленный абзац в части «успех»? Как сейчас, он просто удаляет «ошибку» из своего атрибута класса, и с каждой буквой, вводимой в поле ввода, он добавляет еще один пустой абзац, подобный этому:

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

Итак, я получаю кучу таких в каждом div для каждого поля (в зависимости от того, сколько символов набрано) ... опять же, что мне не хватает?

Ответы [ 2 ]

3 голосов
/ 31 мая 2009

Было бы полезно, если бы вы опубликовали полную функцию проверки и как она была связана с вашей формой.

Тем не менее, я думаю, можно отметить пару вещей:

Ваши радиокнопки обернуты в свои метки, а ваш адрес электронной почты находится рядом с его меткой. Ваш код указывает:

 error.insertBefore(element.prev());

, что означает, что он вставит ошибку DIV перед предшествующим соседом элемента . Ваши радиокнопки не имеют предшествующего соседа, он один внутри элемента label. Вы должны изменить код на:

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

Во-вторых, чтобы удалить теги

при успешной проверке чего-либо, необходимо вызвать функцию remove ():

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

Надеюсь, это поможет.

0 голосов
/ 31 мая 2009

Вы пробовали отладку с FireBug ? Пока вы его используете, используйте инспектор DOM, чтобы убедиться, что древовидная структура соответствует вашим ожиданиям.

...