Javascript-форум (https://javascript.ru/forum/)
-   Angular.js (https://javascript.ru/forum/angular/)
-   -   Привязка переменных к каждому элементу (https://javascript.ru/forum/angular/71502-privyazka-peremennykh-k-kazhdomu-ehlementu.html)

Djambulat 23.11.2017 17:10

Привязка переменных к каждому элементу
 
Здравствуйте.
Сверстать клавиатуру и выводить на определенную область вводимые буквы после клика. Мне к каждой букве на клавиатуре нужно дать переменную... Подскажите как это сделать? Хотя бы дайте правильно начать, чтобы не тратил в пустую времени

Nexus 23.11.2017 17:13

Цитата:

Сообщение от Djambulat
Мне к каждой букве на клавиатуре нужно дать переменную..

Зачем?

Не проще делегировать обработчик события click ближайшему родителю каждой кнопки?

Nexus 23.11.2017 17:15

<div id="result"></div>
<div id="keyboard">
<span>q</span>
<span>w</span>
<span>e</span>
<span>r</span>
<span>t</span>
<span>y</span>
</div>
<script>
document.querySelector('#keyboard').addEventListener('click',function(event){
    if(this!==event.target)
        document.querySelector('#result').innerHTML+=event.target.innerHTML;
});
</script>

Djambulat 23.11.2017 17:19

Это Ангуляр?

Nexus 23.11.2017 17:23

Djambulat, прошу прощения за невнимательность, это javascript :)

Djambulat 23.11.2017 17:32

Ничего)) А с ангуляром не сможешь?

Nexus 23.11.2017 17:34

Djambulat, к сожалению нет.

Dilettante_Pro 23.11.2017 19:06

Мой "Hello World!"

<!DOCTYPE html>
<html lang="en" ng-app="app">
<head>
  <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.6/angular.min.js"></script>
</head>
<body>
   <main ng-controller="AppController">
    <div >{{ inputstring }}</div>
    <div>
      <span ng-click="getLetter('q')">q</span>
      <span ng-click="getLetter('w')">w</span>
      <span ng-click="getLetter('e')">e</span>
      <span ng-click="getLetter('r')">r</span>
      <span ng-click="getLetter('t')">t</span>
      <span ng-click="getLetter('y')">y</span>
    </div>
   </main>
<script>
(function() {

  'use strict';

  angular
  .module('app', [])

   .controller('AppController', ['$scope', function($scope) {
       $scope.getLetter = function(letter) {
           $scope.inputstring = ($scope.inputstring?$scope.inputstring:"") +  letter ;
       };
  }]);

})();
</script>
</body>
</html>

рони 23.11.2017 19:38

"Hello World!" дубль два :)

<!DOCTYPE html>
<html lang="en" ng-app="app">
<head>
  <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.6/angular.min.js"></script>
</head>
<body>
   <main ng-controller="AppController">
    <div >{{ inputstring }}</div>
    <div>
      <span ng-repeat='b in letter' ng-click="getLetter(b)"> {{b}}</span>
    </div>
   </main>
<script>
(function() {
  'use strict';
  angular
  .module('app', [])
   .controller('AppController', ['$scope', function($scope) {
       $scope.letter = 'qwerty';
       $scope.inputstring = "";
       $scope.getLetter = function(letter) {
            $scope.inputstring += letter ;
       };
  }]);

})();
</script>
</body>
</html>

Djambulat 24.11.2017 11:59

Спасибо. А как прописать кнопку backspace, чтобы удаляла последнюю букву?))

рони 24.11.2017 12:29

Djambulat,
<!DOCTYPE html>
<html lang="en" ng-app="app">
<head>
  <style type="text/css">
  div span{
    cursor: pointer;
  }

  </style>
  <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.6/angular.min.js"></script>
</head>
<body>
   <main ng-controller="AppController">
    <div >{{ inputstring }}</div>
    <div>
      <span ng-repeat='b in letter' ng-click="getLetter(b)"> {{b}}</span>
      <span ng-click="inputstring = inputstring.slice(0,-1)"> &crarr;</span>
    </div>
   </main>
<script>
(function() {
  'use strict';
  angular
  .module('app', [])
   .controller('AppController', ['$scope', function($scope) {
       $scope.letter = 'qwerty';
       $scope.inputstring = "";
       $scope.getLetter = function(letter) {
            $scope.inputstring += letter ;
       };


  }]);

})();
</script>
</body>
</html>

Dilettante_Pro 24.11.2017 13:50

Переключение раскладки и shift
<!DOCTYPE html>
<html lang="en" ng-app="app">
<head>
  <style type="text/css">
  div {height:20px;}
  div span{
    cursor: pointer;
    border:1px solid black;
  }

  </style>
  <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.6/angular.min.js"></script>
</head>
<body>
   <main ng-controller="AppController">
    <div >{{ inputstring }}</div>
    <div>
      <span ng-click="chngShift()"> {{view}}</span>
      <span ng-click="chngLetter()"><img src="https://javascript.ru/forum/images/smilies/smile.gif"/></span>
      <span ng-repeat='b in letter' ng-click="getLetter(b)"> {{b}}</span>
      <span ng-click="inputstring = inputstring.slice(0,-1)">&lArr;</span>
    </div>
   </main>
<script>
(function() {
  'use strict';
  angular
  .module('app', [])
   .controller('AppController', ['$scope', function($scope) {
       var alfa ={eng:{alt:'rus',alf:'qwerty'}, rus:{alt:'eng',alf:'йцукен'}};
       var shift ={up:{alt:'down',view:'String.fromCharCode(0x21D1)'},down:{alt:'up',view:'String.fromCharCode(0x21D3)'}};
       $scope.view =  eval(shift.up.view);
       $scope.shift =  shift.up.alt;
       $scope.letter = alfa.eng.alf;
       $scope.language =alfa.eng.alt;
       $scope.inputstring = "";
       $scope.getLetter = function(letter) {
            $scope.inputstring += letter ;
       };
       $scope.chngLetter = function() {
            $scope.letter = alfa[$scope.language].alf ;
            $scope.language =alfa[$scope.language].alt ;
            if(shift[$scope.shift].alt == 'down')
              { $scope.letter = $scope.letter.toUpperCase(); }
            else 
              { $scope.letter = $scope.letter.toLowerCase(); };
       };
       $scope.chngShift = function() {
            if(shift[$scope.shift].alt == 'up')
              { $scope.letter = $scope.letter.toUpperCase(); }
            else 
              { $scope.letter = $scope.letter.toLowerCase(); };
            $scope.view =  eval(shift[$scope.shift].view);
            $scope.shift =  shift[$scope.shift].alt;
       };
  }]);

})();
</script>
</body>
</html>

рони 24.11.2017 14:22

Dilettante_Pro,
:dance: :)

Dilettante_Pro 24.11.2017 14:51

рони,
shift добавлен:victory: немного костыльно:-E

рони 24.11.2017 15:05

Dilettante_Pro,
:) :victory:

Djambulat 24.11.2017 15:17

почему у меня, после того как я стер одну букву, то снова клик не работает? Нужно снова обновить страницу и написать...

Djambulat 24.11.2017 15:19

С шифтом я разберусь после того как с backspace разберусь... Shift очень интересно))))

рони 24.11.2017 15:25

Цитата:

Сообщение от Djambulat
почему у меня, после того как я стер одну букву, то снова клик не работает? Нужно снова обновить страницу и написать...

в каком это браузере?

Djambulat 24.11.2017 15:34

Google.
А все я так сделал...
<span ng-click="remo()">&lArr;</span>

$scope.remo = function() {
	       $scope.inputstring = $scope.inputstring.slice(0, -1);
	};

Djambulat 24.11.2017 15:34

Теперь нужно к Shift приступать))))))

Djambulat 24.11.2017 15:46

Если у меня целая клавиатура сверстана уже на англ и русск, то как тогда быть?

Dilettante_Pro 24.11.2017 15:59

Djambulat,
Не нужен переключатель раскладок.
А на экране место остается?

Djambulat 24.11.2017 16:09

Место для двух клавиатур или в каком смысле?

Dilettante_Pro 24.11.2017 16:34

Djambulat,
Место для ввода текста после размещения на нем двуязычной клавиатуры.

Djambulat 24.11.2017 16:47


Djambulat 24.11.2017 16:50

Внизу для ввода текста. Хочу после клика на иконку в форме земли, чтобы менялся язык))

Dilettante_Pro 24.11.2017 17:14

Djambulat,
А вы писали
Цитата:

Сообщение от Djambulat
у меня целая клавиатура сверстана уже на англ и русск

Так что преключать все-таки надо.
И еще цифры включать.
Ну, шпаргалка у вас есть - дальше попробуйте сами.
насчет земного шара - посмотрите еще раз пример пост 12

Djambulat 27.11.2017 09:59

У тебя из кнопок (qwerty) и (йцукен) А как это сделать с полной клавиатурой и css стилями? Давайте так, у меня два файла ruKey.html и engKey.html как их подставить туда?


Часовой пояс GMT +3, время: 09:34.