2012-02-20 4 views
2

Я использую следующий валидатор для своего проекта: http://www.position-absolute.com/articles/jquery-form-validator-because-form-validation-is-a-mess/.jQuery inline form validation - скрытое поле

Я столкнулся с некоторыми трудностями, используя его с Chosen (http://harvesthq.github.com/chosen/), который заменяет тег «select» по умолчанию на некоторые div и делает скрытый тег select.

В основном это очень проблема, описанная здесь: https://github.com/harvesthq/chosen/issues/473, но это не должно быть действительно адресовано как выбранная проблема, а скорее валидатор.

Итак, вопрос в том, есть ли какое-либо простое решение использовать этот валидатор для включения скрытых полей? Я попытался удалить все части источников сценариев, которые говорят игнорировать скрытые поля, но это не решает проблему. всякий раз, когда я отправляю форму, она проверяет все поля, кроме скрытых.

Заранее спасибо за любую помощь

ответ

2

У меня была аналогичная проблема с этим при использовании «выберите prettifier» JQuery скрипт. Вместо того, чтобы скрыть первоначальный выбор, который, как вы видели, значит, Validate JQuery игнорирует его, я поставил это position в absolute и установить его оставили позицию достатке страницы:

.hidden-field { 
    position: absolute; 
    left: -9999px; 
} 

Там может быть более элегантное решение к этому все же.

+0

Это может сработать :) Собираюсь проверить его сейчас. –

+1

Работал - tyvm :) –

2

Вышеупомянутое решение не является идеальным решением. Если вы вернетесь к проблеме github, на которую вы ссылаетесь выше, вы увидите лучшее решение, которое не предполагает «взлома» любого из подключаемых модулей.

+0

благодарю вас за ответ. Действительно, хаки не идеальны - для решения этой проблемы используется другое решение. –

2

Вот решение, я, наконец, пошел с в случае some1 бы это необходимо, а также:

function validateChosen(targetId){ 
if ($('#'+targetId).val()=='') { 
    valid=false; 
    $('#'+targetId+'_chzn').validationEngine('showPrompt', '* Field required','','topRight',true); 
    } else { 
    $("."+targetId+"_chznformError").fadeOut("normal",function(){ 
     $(this).remove(); 
    }); 
    } 
}