2015-01-28 5 views
0

Я новичок в этом. Я делаю андроид (в будущем также и iOS) приложение с Phonegap. Я бы хотел, чтобы моя клавиатура открылась, когда я нажимаю на какую-то кнопку и закрываю также кнопкой. Добавить ионные клавиатуры штепселя из https://github.com/driftyco/ionic-plugins-keyboard и кнопок в HTML:Как активировать клавиатуру с помощью кнопки?

<div class="button"> 
      <button id="open_keyb">Click Me!</button> 
     </div> 

и JavaScript:

var app = { 
    // Application Constructor 
    initialize: function() { 
     this.bindEvents(); 
    }, 
    // Bind Event Listeners 
    // 
    // Bind any events that are required on startup. Common events are: 
    // 'load', 'deviceready', 'offline', and 'online'. 
    bindEvents: function() { 
     document.addEventListener('deviceready', this.onDeviceReady, false); 
    }, 
    // deviceready Event Handler 
    // 
    // The scope of 'this' is the event. In order to call the 'receivedEvent' 
    // function, we must explicitly call 'app.receivedEvent(...);' 
    onDeviceReady: function() { 
     app.receivedEvent('deviceready'); 
     alert(1); 
     cordova.plugins.Keyboard.show(); 
    }, 
    // Update DOM on a Received Event 
    receivedEvent: function(id) { 
     var parentElement = document.getElementById(id); 
     var listeningElement = parentElement.querySelector('.listening'); 
     var receivedElement = parentElement.querySelector('.received'); 

     listeningElement.setAttribute('style', 'display:none;'); 
     receivedElement.setAttribute('style', 'display:block;'); 

     console.log('Received Event: ' + id); 
    } 
}; 

    app.run(function($ionicPlatform) { 
    $ionicPlatform.ready(function() { 
     if(window.cordova){ 
      cordova.plugins && cordova.plugins.Keyboard && cordova.plugins.Keyboard.hideKeyboardAccessoryBar(true); 
     } 
     alert('test'); 
    }); 
}); 

app.directive('input', function($timeout){ 
    return { 
     restrict: 'E', 
     scope: { 
      'returnClose': '=', 
      'onReturn': '&', 
      'onFocus': '&', 
      'onBlur': '&' 
     }, 
     link: function(scope, element, attr){ 
      element.bind('focus', function(e){ 
       if(scope.onFocus){ 
        $timeout(function(){ 
         scope.onFocus(); 
        }); 
       } 
      }); 
      element.bind('blur', function(e){ 
       if(scope.onBlur){ 
        $timeout(function(){ 
         scope.onBlur(); 
        }); 
       } 
      }); 
      element.bind('keydown', function(e){ 
       if(e.which == 13){ 
        if(scope.returnClose) element[0].blur(); 
        if(scope.onReturn){ 
         $timeout(function(){ 
          scope.onReturn(); 
         }); 
        } 
       } 
      }); 
     } 
    } 
}); 
.run(function($ionicPlatform) { 
    $ionicPlatform.ready(function() { 
    // Hide the accessory bar by default (remove this to show the accessory bar above the keyboard 
    // for form inputs) 
    if(window.cordova && window.cordova.plugins.Keyboard) { 
     cordova.plugins.Keyboard.hideKeyboardAccessoryBar(true); 
    } 
    if(window.StatusBar) { 
     // org.apache.cordova.statusbar required 
     StatusBar.styleDefault(); 
    } 
    ionic.Platform.isFullScreen = true; 
    }); 
}) 

var fn = function() { 

    alert('test'); 
    document.getElementById('one').onclick = function() { 
     alert('click'); 
     cordova.plugins.Keyboard.show(); 
    }; 

}; 

document.addEventListener('DOMContentLoaded', fn, false); 

в папке WWW. И это не работает. Эти предупреждения также не отображаются. Вы можете мне помочь? Как это сделать?

+0

Если вы действительно планируете сделать приложение с PhoneGap, вы обязательно должны начать с изучения JavaScript. Здесь много ошибок синтаксиса, и если вы не можете их идентифицировать прямо сейчас, вы зададите здесь много вопросов. – Gorcyn

+0

Я не исправил ошибки синтаксиса, я скопировал это из Интернета. Я только написал последнюю функцию: var fn = function(), и я думаю, что все в порядке. Я проверю других, спасибо за совет;) – user3569696

+0

Подождите секунду, что не работает? какова часть, которую вы на самом деле сделали, и ту, которую вы скопировали? кнопка, конечно, не может работать, ее идентификатор - 'open_keyb', в то время как каждый отдельный слушатель добавляется к другим идентификаторам. Кроме того, вам действительно не нужно объявлять fn, вы можете просто оставить эту часть кода в стороне от функции fn. – briosheje

ответ

0

не добавлено ни одного слушателя событий к кнопке open_keyb, поэтому ничего не будет срабатывать.

Кроме того, поскольку похоже, что вы работаете с мобильными устройствами, возможно, вам захочется также добавить событие touchend, несмотря на то, что click должен работать в любом случае.

Пожалуйста, попробуйте заменить:

var fn = function() { 

    alert('test'); 
    document.getElementById('one').onclick = function() { 
     alert('click'); 
     cordova.plugins.Keyboard.show(); 
    }; 

}; 

document.addEventListener('DOMContentLoaded', fn, false); 

с этим:

document.addEventListener('DOMContentLoaded',function(DOMLoaded){ 
    document.getElementById('open_keyb').addEventListener('click', function (clickEvent){ 
     alert('click'); 
     cordova.plugins.Keyboard.show(); 
    }); 
}); 
+0

благодарим вас за ваши усилия по разъяснению и пониманию моей некомпетентности. не работает, т. е. я думаю, что он не тянет этот код javascript когда-либо. – user3569696

+0

работает ли предупреждение? Предупреждение должно работать – briosheje

+0

В этом проблема, предупреждение не работает – user3569696

Смежные вопросы