У меня есть два элемента (выпадает), которые очень тесно помещаются. Эти элементы являются обязательными полями.
Я использую jQuery valiate для проверки полей. Сообщение об ошибке показывает и для элементов и для пространства между увеличениями элементов, поскольку сообщение об ошибке первого управления отображено около элемента
$('#RegisterForm').validate({
rules: {
Country:{required: true},
State:{required: true}
},
messages: {
Country:{required: "Select Country"},
State:{required: "Select State"}
}
});
Я попытался использовать повреждение перед элементами как:
$('#RegisterForm').validate({
rules: {
Country:{required: true},
State:{required: true}
},
messages: {
Country:{required: "<br/>Select Country"},
State:{required: "<br/>Select State"}
}
});
Когда я сделал так, второй элемент перемещается в следующую строку.
Как я могу показать сообщения об ошибках чуть ниже элементов, не влияя на выравнивание/размещение соседних элементов.
Вы можете использовать низкий Уровень мыши крюк. См. Этот пример и проверьте наличие MESAGE WM_MOUSEMOVE в HoodCallback.
Вы также можете использовать класс IMESSAGEFILTER, чтобы поймать события мыши и вызвать событие, чтобы получить позицию (Примечание: это только получит позицию над окном, не снаружи этого):
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
namespace GlobalMouseEvents
{
public partial class Form1 : Form
{
public Form1()
{
GlobalMouseHandler gmh = new GlobalMouseHandler();
gmh.TheMouseMoved += new MouseMovedEvent(gmh_TheMouseMoved);
Application.AddMessageFilter(gmh);
InitializeComponent();
}
void gmh_TheMouseMoved()
{
Point cur_pos = System.Windows.Forms.Cursor.Position;
System.Console.WriteLine(cur_pos);
}
}
public delegate void MouseMovedEvent();
public class GlobalMouseHandler : IMessageFilter
{
private const int WM_MOUSEMOVE = 0x0200;
public event MouseMovedEvent TheMouseMoved;
#region IMessageFilter Members
public bool PreFilterMessage(ref Message m)
{
if (m.Msg == WM_MOUSEMOVE)
{
if (TheMouseMoved != null)
{
TheMouseMoved();
}
}
// Always allow message to continue to the next filter control
return false;
}
#endregion
}
}
-121--2387567- Используйте опцию Опция (см. Документацию здесь: http://docs.jquery.com/plugins/validation/validate#toptions )
$('#RegisterForm').validate({
rules: {
Country:{required: true},
State:{required: true}
},
messages: {
Country:{required: "Select Country"},
State:{required: "Select State"}
},
errorPlacement: function(error, element) {
error.appendTo( element.parent("td").next("td") );
}
});
Конечно, Придется адаптировать код к вашей ситуации.