【问题标题】:jquery validation messages using ids rather than name for a rails form with same namejquery验证消息使用ids而不是名称用于具有相同名称的rails表单
【发布时间】:2014-03-24 02:43:17
【问题描述】:

您好,我有包含电子邮件、姓名等的 rails 表单;带有问题的字段名称来自 yml 文件。对于 3 组问题,用户必须分别填写 3 个答案。

表格:

    <% @list = YAML::load(File.open("#{Rails.root}/config/questions.yml"))%>
    <% ans_iter= 0 %>
    <% @list.keys.each do |set| %>
    <% ans_iter += 1 %>
    <%= select_tag 'questions[]',options_for_select(@list[set]) %>
    <%= text_field_tag "answers[]", nil, :class => 'required', :id => "ans_#{ans_iter}"%>
    <% end %>

最初没有迭代属性(上式中的ans_iter),当时我做Inspect元素时,我习惯将每个答案文本框的ID作为answers_和类名作为答案[]。但后来在添加迭代器后,我得到的 id 分别为 ans_1、ans_2、ans_3。

当我将验证器消息编写为:

函数 validatePage(){

validator = $('#new_user').validate({
    rules: {  user_first_name:{ required:true},
        user_email: { required:true},
        ans_1: {required:true},
        ans_2: {required:true},
        ans_3: {required:true} },
    messages: {
        user_first_name:{ required: "Please enter First Name"},
        user_email:   { required: "Please enter Email"},
        ans_1: {required: "Please fill the answer"},
        ans_2: {required: "Please fill the answer"},
        ans_3: {required: "Please fill the answer"} }
}); }

对于上述 js,只有第 1 个答案文本框验证有效,其余 2 个答案文本框无效。我认为我的验证器正在使用名称而不是 id。有没有办法使用 id 运行我的验证?

【问题讨论】:

    标签: javascript jquery ruby-on-rails ruby validation


    【解决方案1】:

    为什么不这样做

    ...

    'answers[]': {required:true}
    

    ...

    'answers[]': {required: "Please fill the answer"}
    

    【讨论】:

    • 使用此插件时只能使用名称验证,不能使用id。因此,如果您试图让多个文本字段具有相同的 name,那将无法正常工作。也许给答案字段名称,如ans_1ans_2 等,然后它就会起作用......
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-09
    相关资源
    最近更新 更多