1

client_side_validations-formtasticclient_side_validations宝石を使っています。

私のモデルでは:

validates_presence_of :full_name, :parent_name
validates_confirmation_of :full_name, :parent_name, on: :create

知らせる

= semantic_form_for @attendee ||= Attendee.new, validate: true do |f|
  = f.inputs do
    = f.input :full_name, label: "Attendee Full Name", validate: { confirmation: false }
    = f.input :parent_name, label: "Parent/Guardian Name", validate: { confirmation: false }
    = link_to image_tag("buttons/save.png"), "#new-attendee-confirm", id: "new_attendee_save", class: "fancybox"
    #new-attendee-confirm{:style => "width:600px;display: none;"}
      = render partial: "attendees/new_attendee_confirm", locals: {f: f }

new_attendee_confirm

= f.input :full_name_confirmation, label: "Attendee Full Name"
= f.input :parent_name_confirmation, label: "Parent/Guardian Name"
= f.action :submit

多段階フォーム検証用のスクリプト#new_attendee_saveを追加しました (モデルから削除すると機能validates_confirmation_ofします):

$("#new_attendee_save").bind("click", function (e) {
  //If the form is valid then go to next else don't
  var valid = true;
  // this will cycle through all visible inputs and attempt to validate all of them.
  // if validations fail 'valid' is set to false
  $('[data-validate]:input:visible').each(function () {
    var settings = window.ClientSideValidations.forms[this.form.id]
    if (!$(this).isValid(settings.validators)) {
      valid = false
    }
  });
  if (valid) {
    //code to go to next step
  }
  // if any of the inputs are invalid we want to disrupt the click event
  return valid;
});

このロジックが必要です。ユーザーが最初のステップでフォームに入力すると、確認を除くすべての検証がトリガーされます。次にユーザーが保存ボタンをクリックすると、同意が表示され、署名として子と親の名前を入力するように求められます。これらのフィールドでは、検証は存在と確認のために機能する必要があります。このシナリオを実装する方法はありますか?

私のやり方validate: { confirmation: false }では、最初のステップに追加しても機能せず、確認と一致しないというメッセージが表示されます。

4

0 に答える 0