3

次の要件を持つ携帯電話と自宅の電話フィールドがあります。

  • 少なくとも 1 つ必要です
  • 文字が存在する場合、文字長は 12 でなければなりません (他のフィールドに関係なく)

私はjQuery Validateで良い経験をしましたが、ここで欲しいものを手に入れるのは難しいです. これは私が現在持っているものです:

    rules:
        "contact[mobile]":                                                                                                                                                        
          required: ->
            if $('#contact_home_phone').val().length < 12 and $('#contact_mobile').val().length < 12     
              return 12                                                               
            else 
              return false
          minlength: ->                                                               
            if $('#contact_home_phone').val().length < 12 and $('#contact_mobile').val().length < 12     
              return 12
            else
              return false

        "contact[home_phone]":                                                         
          required: ->
            if $('#contact_mobile').val().length < 12 and $('#contact_home_phone').val().length < 12     
              return true                                                             
            else                                                                      
              return false                                                            
          minlength: ->                                                               
            if $('#contact_mobile').val().length < 12 and $('#contact_home_phone').val().length < 12     
              return 12
            else
              return false

これは私には不格好な Javascript のようにも感じられるので、機能するソリューションがより雄弁であることを願っています。

4

1 に答える 1

1

これをテストする時間はありませんが、おそらく次のようなものです。

var val_phone = function ( value, element, params ) {

  var phone_fields = [ 'home_phone', 'mobile' ];

  var other_field;

  while ( other_field = phone_fields.pop() ) {

    other_field = "contact_" + other_field;

    if ( element.id != other_field ) {

      other_field = $( "#" + other_field )[0];

      break;

    }
    // if

  }
  // while


  return Boolean(

    value.length == 12 ||

    (

      value.length == 0 &&

      $( other_field ).val().length == 12

    )

  );

};


$.validator.addMethod( 'contact_phone', val_phone, "You must supply at least one 12-character phone number." );
于 2012-04-14T15:51:17.043 に答える