2013-03-01 3 views
1

Я создаю простую форму для своего клиента, и они хотят отобразить сообщение об ошибке в текстовом поле. Можно ли добиться этого с помощью плагина JQuery's Validation?jQuery validate - отображать сообщение об ошибке в текстовом поле

Спасибо!

+1

haha ​​.. закрытый ответ для закрытого вопроса ..;) – Fr0zenFyr

+0

Используйте текст заполнителя в ваших полях формы. Для ошибок проверки не рекомендуется отображать сообщение в поле, скорее выделите поле и отобразите ошибку рядом с полем. – Fr0zenFyr

ответ

0

Да, конечно, это возможно, поскольку вы проверяете текстовое поле и его пойманная ошибка просто назначьте сообщение об ошибке как значение этого текстового поля или заполнителя.

$("#yourtextfield").val("This field can't be empty."); 
+0

И как это сделать с плагином OP? – Sparky

0

Да, вы можете. Ваши навыки кажутся очень сырыми.

Давайте рассмотрим простой путь, потому что ваш вопрос звучит просто. При ошибке дайте условие для назначения строки сообщения как значения для поля ввода.

что-то вроде

var err = "err_msg";

$('#elementId').val(err);

Смотрите раздел .val('value') на цитату http://api.jquery.com/val/

7

OP:

«Они хотят отобразить сообщение об ошибке в текстовом поле. Будет ли это можно добиться с Validation плагин JQuery в?»

Да. Это возможно Использование errorPlacement функции обратного вызова/опции плагина.

НЕТ, я никогда не сделал бы это. Это делает практически невозможным правильное взаимодействие пользователя с формой. Ошибка уничтожает любые данные, которые пользователь уже ввел, и пользователь должен удалить текст сообщения, чтобы ввести свои данные. Я уверен, что вы можете думать о умных способах для решения этих проблем, но IMO, это очень плохой дизайн с точки зрения пользовательского интерфейса. Покажите своему клиенту this demo, затем прокрутите вниз и покажите им my second demo.

DEMO: http://jsfiddle.net/6fUTV/

$(document).ready(function() { 

    $('#myform').validate({ // initialize the plugin 
     // rules & options, 
     errorPlacement: function(error, element) { 
      element.val(error.text()); 
     } 
    }); 

}); 

EDIT: Вместо того, чтобы вы могли использовать атрибут placeholder. Сообщение будет по-прежнему внутри входного элемента, но оно не будет отображаться как value, поэтому оно не будет мешать взаимодействию с пользователем. Однако, большой недостаток этого подхода заключается в том, что если у вас есть правило для проверки формата данных, такого как email, minlength и т. Д., Пользователь никогда не увидит сообщение о проверке, потому что есть значение, находящееся внутри поля на вершина заполнителя!

errorPlacement: function(error, element) { 
    element.attr("placeholder", error.text()); 
} 

DEMO 2: http://jsfiddle.net/n5saemj7/


Альтернативы:

Показать ошибки с помощью сообщение пузыри: http://jsfiddle.net/kyK4G/

Больше информации: How to display messages from jQuery Validate plugin inside of Tooltipster tooltips?

+0

Спасибо за ваш вклад. Ваш комментарий был очень полезен, чтобы убедить моего клиента не показывать сообщение об ошибке в самом поле. И да, я довольно простой в JavaScript. Я должен сидеть и учиться правильно :( – JungleJap

+0

+ 1. Ваша первая скрипка любопытная. Невозможно удалить сообщение об ошибке для ввода необходимой информации. Я думаю, что мой ответ работает лучше в таком сценарии, хотя ваша вторая скрипка намного лучше, но это не было проблемой, о которой спросили ОП, к счастью, ваше предположение сработало. Для нисходящего ответа на мой ответ я четко упомянул, что это простое решение простого вопроса. Кстати, это, похоже, другое заброшенное решение не принимается до вечности @JungleJap: начните принимать ответ, который решает вашу проблему, в противном случае люди перестанут отвечать на ваши вопросы. – Fr0zenFyr

+1

@ Fr0zenFyr, спасибо. Мой первый jsFiddle был просто продемонстрировать, что его запрос не имеет смысла и чтобы показать, почему. Есть несколько неуклюжих обходных решений, которые сделали бы его немного лучше, но я решил оставить их для ame reason ... Я, очевидно, просто считаю, что ошибка внутри элемента является очень плохим дизайном. – Sparky

7

Они сказали вам, что это плохой метод, может быть, так оно и есть.

Но вы можете использовать заполнитель, вместо того, чтобы заменить содержимое уже, просто изменить:

errorPlacement: function(error, element) { 
    element.val(error.text()); 
} 

Для этого:

errorPlacement: function(error, element) { 
    element.attr("placeholder",error.text()); 
} 

Надежда, которая помогла вам, берегите себя!

+2

Для большей ясности ** [jsfiddle] (http://jsfiddle.net/prashantptapase/6fUTV/36/) ** –

+0

Это будет отлично работать, когда единственным правилом является 'required'. Однако большой недостаток этого подхода заключается в том, что если у вас есть правило для проверки формата данных, такого как 'email',' minlength' и т. Д., Пользователь никогда не сможет увидеть сообщение об ошибке. – Sparky

Смежные вопросы