我正在使用 selected.js ( http://harvesthq.github.com/chosen/ )。我想知道是否有人能够一起使用选择的选择框和 client_side_validations。
问题是,当我们使用 selected 时,它会隐藏原始 select 元素并呈现自己的下拉列表,当我们关注时不会调用验证,并且当显示验证消息时,它会与原始 select 元素一起显示,因此定位错误也不正确。
什么可能是处理这个问题的好方法,我是我们可以更改其中的一些代码ActionView::Base.field_error_proc
,目前看起来像
ActionView::Base.field_error_proc = Proc.new do |html_tag, instance|
unless html_tag =~ /^<label/
%{<div class="field_with_errors">#{html_tag}<label for="#{instance.send(:tag_id)}" class="message">#{instance.error_message.first}</label></div>}.html_safe
else
%{<div class="field_with_errors">#{html_tag}</div>}.html_safe
end
end
有任何想法吗 ?
编辑1:
我现在有以下对我有用的解决方案。
- 将类“chzn-dropdown”应用于我选择的所有选择
- 使用了 client_side_validations Gem 提供的以下回调
clientSideValidations.callbacks.element.fail = function(element, message, callback) {
if (element.data('valid') !== false) {
if(element.hasClass('dropdown')){
chzn_element = $('#'+element.attr('id')+'_chzn');
console.log(chzn_element);
chzn_element.append("<label class='message-chzn'>"+message+"</label>");
}
else{
callback();
}
}
}