Depois de descobrir os gatilhos condicionais e de aprender onde mostrar as mensagens de erro, vamos hoje ver uma mensagem de erro para campos agrupados.
Neste exemplo, dois campos estão relacionados, e apenas um deles é obrigatório. Noutras palavras, cada um destes dois campos é obrigatório se o outro estar vazio. Estes dois campos podem ser de qualquer tipo. Nós interessemos aqui a um campo de entrada de texto simples e a um textarea. Com certeza, poderiamos ter usado um botão de rádio para indicar este comportamento específico, mas nós preferimos aqui manter a interface a mais leve e simples possível, limitando o número de elementos.
O formulário é muito simples. Definimos uma div em torno dos dois campos relacionados para mostrar a mensagem de erro após cada um deles. Idealmente, algum estilo CSS deveria ser aplicado para mostrar a proximidade destes dois campos mais óbvia.
<form id="myFormId" method="post"> <div id="groupDiv"> <label for="textFieldId">Uma linha de texto</label> <input type="text" name="textField" id="textFieldId" value="" /><br/> <label for="textAreaId">Várias linhas de texto</label> <textarea name="textArea" id="textAreaId"></textarea> </div> <input type="submit" value="Enviar" /> </form>
O validador define oneOfTwo como um elemento agrupado incluindo ao mesmo tempo o campo de entrada simples e o textarea. As chaves rules, messages e errorPlacement usam no entanto os nomes dos elementos separadamente.
$("#myFormId").validate({ groups: { oneOfTwo: "textField textArea" }, rules: { textField: { required: function() { return ($("#textFieldId", "#myFormId").val().length == 0); } }, textArea: { required: function() { return ($("#textAreaId", "#myFormId").val().length == 0); } } }, messages: { textField: 'Por favor, quer insira uma linha de texto, quer copie e cole o seu texto no campo de entrada.', textArea: 'Por favor, quer insira uma linha de texto, quer copie e cole o seu texto no campo de entrada.', }, errorPlacement: function(error, element) { if ((element.attr("name") == "textField") || (element.attr("name") == "textArea")) { error.insertAfter("#groupDiv", "#myFormId"); } else { error.insertAfter(element); } } });
Advanced jQuery Form validation (4): Display error message for grouped fields (em inglês)
Validation de formulaire jQuery avancée (4) : affichage d'un message d'erreur pour des champs groupés (em francês)
Validación de formulario jQuery avanzado (4): mostrar un mensaje de error para campos agrupados (em espanhol)
Sem comentários:
Enviar um comentário