есть 1 кнопка для сохранения и вызова функции JS в cakephp - PullRequest
0 голосов
/ 16 марта 2020

У меня есть веб-сайт для торта php, и в представлении ниже у меня есть 2 кнопки на форме. Что я хочу сделать, это просто нажать на кнопку Продолжить и вызвать функцию JS. В настоящее время я нажимаю кнопку вычисления, чтобы вызвать функцию JS, затем нажимаю кнопку продолжения в этой форме (2 нажатия кнопки). Я просто хочу иметь 1 кнопку для этого процесса.

   <input type="button" value="calculate" id="calculate_address_lat_long" class="btn btn-info btn-block waves-effect waves-light">

    <div class="mute" id="formated_address_lat_long"></div> 
  ...

  <?php     echo $this->Form->button(__('Continue'))

  //this didnt work
   $options = array('label' => 'Continue', 'id' => 'calculate_address_lat_long',  'onclick' => 'calculate_address_lat_long()');
                                       echo $this->Form->button($options);


  //jquery


$(document).on('click', '#calculate_address_lat_long', function () {
        var address = '';
        address += $('#street').val();
        address += ' ' + $('#suburb').val();
        address += ' ' + $('#postcode').val();
        address += ' ' + $('#state').val();

     //  alert( $('#street').val());
         alert( address);

             alert(google.maps.GeocoderStatus.OK);

        geocoder.geocode( { 'address': address}, function(results, status) {

            if (status == google.maps.GeocoderStatus.OK) {


             //     alert('asdasd');
                  console.log(results); 
                var latitude = results[0].geometry.location.lat();
                var longitude = results[0].geometry.location.lng();
                $('#lat').val(latitude);
                $('#long').val(longitude);
                $('#formated_address_lat_long')
                    .html('<div class="alert alert-success">' + results[0].formatted_address + '</div>')
                    .fadeTo(100, 0.1).fadeTo(250, 1)
                    .css({"position": "relative","top": "15px"});
           // alert($('#lat').val(latitude));

            } else {
                //  alert('qqqasdasd');

             //     alert($('#lat').val(latitude));
           // alert($('#long').val(longitude));
                $('#formated_address_lat_long')
                    .fadeTo(100, 0.1).fadeTo(250, 1)
                    .html('<div class="alert alert-error">Address Not Found</div>')
                    .css({"position": "relative","top": "15px"});
            }
        });
        // alert('1111qqqasdasd');

    });

Ответы [ 3 ]

1 голос
/ 23 марта 2020

Согласно методу HTML, на одной странице должен быть только один уникальный идентификатор. в вашем случае кнопка HTML id = "Calculay_address_lat_long" и Cake PHP кнопка генерирования id = "Calculate_address_lat_long". Поэтому попробуйте вместо этого использовать класс.

0 голосов
/ 17 марта 2020

Мне нужно написать код в php в контроллере и сделать это на стороне сервера

  if ($this->request->is(['patch', 'post', 'put'])) {
            $data = $this->request->data;
          $address=$data['address_street'] .'+'. $data['address_suburb'] .'+'. $data['address_postcode'] .'+'. $data['address_state'] ;
          $address = str_replace(" ", "+", $address);


              $json = file_get_contents("https://maps.googleapis.com/maps/api/geocode/json?address='.$address.'&key=mykey");

             $json = json_decode($json);
             $lat='';
             $long='';   

            if ($json->{'results'}!=null){
             $lat = $json->{'results'}[0]->{'geometry'}->{'location'}->{'lat'};
             $long = $json->{'results'}[0]->{'geometry'}->{'location'}->{'lng'};
            //   debug($lat);
            //  debug($long); 
            }
0 голосов
/ 17 марта 2020

Первый параметр функции кнопки - это заголовок, а опции - второй параметр. Попробуйте это:

$options = array('id' => 'calculate_address_lat_long',  'onclick' => 'calculate_address_lat_long()');
echo $this->Form->button('Continue', $options);
...