Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 12.06.2014, 23:58
Аватар для SnowyWolf
Интересующийся
Отправить личное сообщение для SnowyWolf Посмотреть профиль Найти все сообщения от SnowyWolf
 
Регистрация: 18.03.2014
Сообщений: 29

Кнопку типа <input type="button"> связать с клавишей(например, с Enter)
Подскажите, пожалуйста, как привязать кнопку типа <input type="button"> к клавише(например, к Enter), предположим в данной форме:
<html>
<head>
<meta HTTP-EQUIV=Content-Type CONTENT="text/html; CHARSET=UTF-8">
</head>
<body>
<form>
	<tr><td><font style="font-size: 15pt;" color="#330000">Количество монет:</font></td><td><input type="text" value="" name="col"></td>
	<td><input type="button" onclick="start(col.value)" value="Разделим золото"></td></tr>
	<tr><td><font style="font-size: 15pt;" color="#330000">Общий вес золота:</font></td><td><textarea id="weight" rows="1" cols="15"></textarea></td></tr>
	<tr><td><font style="font-size: 15pt;" color="#330000">Большая часть:</font></td><td><textarea id="more" rows="1" cols="15"></textarea></td></tr>
	<tr><td><font style="font-size: 15pt;" color="#330000">Меньшая часть:</font></td><td><textarea id="less" rows="1" cols="15"></textarea></td></tr>
	<tr><td><font style="font-size: 15pt;" color="#330000">Разница в весе:</font></td><td><textarea id="difference" rows="1" cols="15"></textarea></td></tr>
</form>
</body>
Ответить с цитированием
  #2 (permalink)  
Старый 14.06.2014, 08:05
Профессор
Отправить личное сообщение для jsnb Посмотреть профиль Найти все сообщения от jsnb
 
Регистрация: 15.03.2014
Сообщений: 561

Что значит привязать кнопку к клавише? Если надо чтобы в форме при нажатии enter срабатывал обработчик который повешен на кнопку, то можно использовать событие submit - оно как раз возникает при нажатии enter'а при фокусе на элементах формы. Если надо сделать чтобы вообще работало глобально на странице, то можно повесить обработчик на keydown документа и смотреть какую кнопку там нажали.
Ответить с цитированием
  #3 (permalink)  
Старый 14.06.2014, 18:35
Аватар для SnowyWolf
Интересующийся
Отправить личное сообщение для SnowyWolf Посмотреть профиль Найти все сообщения от SnowyWolf
 
Регистрация: 18.03.2014
Сообщений: 29

jsnb,
Сообщение от jsnb
Если надо чтобы в форме при нажатии enter срабатывал обработчик который повешен на кнопку, то можно использовать событие submit
пробовал, только сценарий выполняется и сразу исчезает.
<html>
<head>
<title>«Поделим золото предков честно!»16.05.2014</title>
<meta HTTP-EQUIV=Content-Type CONTENT="text/html; CHARSET=UTF-8">
</head>
<body background="gold.jpg">
<style type="text/css">
  table#coints td{
    border: 1px solid black;
    width: 20px;
  }
  table{
    margin-left:auto; 
    margin-right:auto; 
    width:auto;
  }
</style>
<script language=javascript type=text/javascript>


  function start(val, min, max)//Общая функция в которую приходит начальное условие(кол. монет) и выводит результат в форму. Здесь задаются переменные значения которох берутся с функций ниже.
  {
     var numberCoins = parseInt(val);//Перевод строки в число
     var min=parseInt(min);
     var max=parseInt(max);
      var arrayCoins = new Array(numberCoins);// генерация массива размером по количеству монет.
      genereMassCoins(arrayCoins, min , max);
    var   allMassCoins = returnAllMassNuber(arrayCoins); //общая масса монет
     var table =  GenereteTableGold(arrayCoins); // генерация таблицы помассиву
      var sortedArray = sortedArrayNumber(arrayCoins);// сортировка массива.
      var MinAndMax = returnMinAndMax(sortedArray);// возвращает 2й массив где первый минимальный а второй максимальный.
      WriteRezultoNods(MinAndMax[0] , MinAndMax[1], allMassCoins, table); // рисует результаты вычислений
      
  }
  function genereMassCoins(massToSave, min , max){
      for (var i=0; i < massToSave.length; i++)
      {
          massToSave[i]=Math.floor(min+(Math.random()*(max-min)));//Вычисление массы каждой монеты
      };

    }
    function sortedArrayNumber(massToSort){// Это сортировка пузирьком но в обратной форме.
      var sortArray = massToSort;
         for(var index =0; index < massToSort.length -1 ; index++){
          for(var varIndex = index+1; varIndex < massToSort.length; varIndex++){
            if(sortArray[index]<sortArray[varIndex] ){
              var Variable = sortArray[index];
              sortArray[index] = sortArray[varIndex];
              sortArray[varIndex] = Variable;
            }
          }
         }
         return sortArray;

    }
    function returnAllMassNuber(arrayNumber)//Общая масса
    {
        var allMas=0;
        for(var i =0 ; i< arrayNumber.length; i++){
          allMas += arrayNumber[i];
        }
        return allMas;
    }

  function returnMinAndMax(sortedArray)//Вычисление большей и меньшей части
  {
    var min =0, max= 0;
      for(var index = 0; index<= sortedArray.length-1; index= index+2){
        if(index == sortedArray.length-1){
          max +=sortedArray[index];
        } else{
          min +=sortedArray[index];
          max +=sortedArray[index+1];
        }
      }
      
      return [(min< max)? min: max, (max>min)? max: min]; // (max>min)? max: min  - это тернарный оператор.
  }

  function GenereteTableGold(arrayCoins){
      var numberCoinsToLine = 50; //количество записей в золота в строке
      var numberRow = parseInt(arrayCoins.length/numberCoinsToLine +1);// вычесляем количество строк (numberCoinsToLine+1)
      var table = document.createElement("table");// создаем таблицу
      table.id = "coints";// присваеваем ей ID 
       for(var indexMass =0, indexRow=0; indexRow < numberRow;indexRow++ ){// цикл формирующий строки и переменная индекса массива
            var newTr = document.createElement("tr");// создаем новую строку
            for(var indexColl=0; indexColl< numberCoinsToLine; indexColl++, indexMass++){// цикл формирующий ячейки и ведущий общий подсчет индекса массива
                var newTd = document.createElement("td");// создаем ячеку
              if(indexMass< arrayCoins.length){// если индекс допустим для массива
                newTd.innerHTML =arrayCoins[indexMass];// заполняем ячейку
              } 
              newTr.appendChild(newTd);// добавляем ячейку в строку
              //appendChild() - добавляет новый элемент в конец.
            }
          table.appendChild(newTr); //добавляем строку в таблицу
       }

 return table;  
}

	function WriteRezultoNods(less, more, mass, table)//Вывод результатов в форму
  {
      var Show = document.getElementById("show");
       Show.innerHTML =''; Show.appendChild(table);
	      document.getElementById('weight').value= mass;
	      document.getElementById('more').value= more;
	      document.getElementById('less').value= less;
	      document.getElementById('difference').value= more-less;
}
</script>
<div align=center>
<font style="font-size: 15pt;" color="#330000" face="Tahoma">Друзья-золотоискателя нашли клад золотых украшений древней цивилизации Инков. Они решили поделить их по весу. Договорились, что раздел будет честным, если разница между двумя частями будет минимальная. Кому же достанется часть большего веса решит "монета".<br>Как правильно поделить золото?</font>
<table>
<form>
	<tr><td><font style="font-size: 15pt;" color="#330000">Количество монет:</font></td><td><input type="text" value="" name="col"></td></tr>
	<tr><td><font style="font-size: 15pt;" color="#330000">Минимальный вес монеты:</font></td><td><input type="text" value="" name="minweight"></td></tr>
  <tr><td><font style="font-size: 15pt;" color="#330000">Максимальный вес монеты:</font></td><td><input type="text" value="" name="maxweight"></td><td><input type="submit" onclick="start(col.value, minweight.value, maxweight.value)" value="Разделим золото"></td></tr>
	<tr><td><font style="font-size: 15pt;" color="#330000">Общий вес золота:</font></td><td><textarea id="weight" rows="1" cols="15"></textarea></td></tr>
	<tr><td><font style="font-size: 15pt;" color="#330000">Большая часть:</font></td><td><textarea id="more" rows="1" cols="15"></textarea></td></tr>
	<tr><td><font style="font-size: 15pt;" color="#330000">Меньшая часть:</font></td><td><textarea id="less" rows="1" cols="15"></textarea></td></tr>
	<tr><td><font style="font-size: 15pt;" color="#330000">Разница в весе:</font></td><td><textarea id="difference" rows="1" cols="15"></textarea></td></tr>
</form>
</table>
</div>
<div id="show"></div>
</body>
</html>

Последний раз редактировалось SnowyWolf, 14.06.2014 в 18:39.
Ответить с цитированием
  #4 (permalink)  
Старый 14.06.2014, 18:38
Аватар для SnowyWolf
Интересующийся
Отправить личное сообщение для SnowyWolf Посмотреть профиль Найти все сообщения от SnowyWolf
 
Регистрация: 18.03.2014
Сообщений: 29

А если через button, то все нормально работает:
<html>
<head>
<title>«Поделим золото предков честно!»16.05.2014</title>
<meta HTTP-EQUIV=Content-Type CONTENT="text/html; CHARSET=UTF-8">
</head>
<body background="gold.jpg">
<style type="text/css">
  table#coints td{
    border: 1px solid black;
    width: 20px;
  }
  table{
    margin-left:auto; 
    margin-right:auto; 
    width:auto;
  }
</style>
<script language=javascript type=text/javascript>


  function start(val, min, max)//Общая функция в которую приходит начальное условие(кол. монет) и выводит результат в форму. Здесь задаются переменные значения которох берутся с функций ниже.
  {
     var numberCoins = parseInt(val);//Перевод строки в число
     var min=parseInt(min);
     var max=parseInt(max);
      var arrayCoins = new Array(numberCoins);// генерация массива размером по количеству монет.
      genereMassCoins(arrayCoins, min , max);
    var   allMassCoins = returnAllMassNuber(arrayCoins); //общая масса монет
     var table =  GenereteTableGold(arrayCoins); // генерация таблицы помассиву
      var sortedArray = sortedArrayNumber(arrayCoins);// сортировка массива.
      var MinAndMax = returnMinAndMax(sortedArray);// возвращает 2й массив где первый минимальный а второй максимальный.
      WriteRezultoNods(MinAndMax[0] , MinAndMax[1], allMassCoins, table); // рисует результаты вычислений
      
  }
  function genereMassCoins(massToSave, min , max){
      for (var i=0; i < massToSave.length; i++)
      {
          massToSave[i]=Math.floor(min+(Math.random()*(max-min)));//Вычисление массы каждой монеты
      };

    }
    function sortedArrayNumber(massToSort){// Это сортировка пузирьком но в обратной форме.
      var sortArray = massToSort;
         for(var index =0; index < massToSort.length -1 ; index++){
          for(var varIndex = index+1; varIndex < massToSort.length; varIndex++){
            if(sortArray[index]<sortArray[varIndex] ){
              var Variable = sortArray[index];
              sortArray[index] = sortArray[varIndex];
              sortArray[varIndex] = Variable;
            }
          }
         }
         return sortArray;

    }
    function returnAllMassNuber(arrayNumber)//Общая масса
    {
        var allMas=0;
        for(var i =0 ; i< arrayNumber.length; i++){
          allMas += arrayNumber[i];
        }
        return allMas;
    }

  function returnMinAndMax(sortedArray)//Вычисление большей и меньшей части
  {
    var min =0, max= 0;
      for(var index = 0; index<= sortedArray.length-1; index= index+2){
        if(index == sortedArray.length-1){
          max +=sortedArray[index];
        } else{
          min +=sortedArray[index];
          max +=sortedArray[index+1];
        }
      }
      
      return [(min< max)? min: max, (max>min)? max: min]; // (max>min)? max: min  - это тернарный оператор.
  }

  function GenereteTableGold(arrayCoins){
      var numberCoinsToLine = 50; //количество записей в золота в строке
      var numberRow = parseInt(arrayCoins.length/numberCoinsToLine +1);// вычесляем количество строк (numberCoinsToLine+1)
      var table = document.createElement("table");// создаем таблицу
      table.id = "coints";// присваеваем ей ID 
       for(var indexMass =0, indexRow=0; indexRow < numberRow;indexRow++ ){// цикл формирующий строки и переменная индекса массива
            var newTr = document.createElement("tr");// создаем новую строку
            for(var indexColl=0; indexColl< numberCoinsToLine; indexColl++, indexMass++){// цикл формирующий ячейки и ведущий общий подсчет индекса массива
                var newTd = document.createElement("td");// создаем ячеку
              if(indexMass< arrayCoins.length){// если индекс допустим для массива
                newTd.innerHTML =arrayCoins[indexMass];// заполняем ячейку
              } 
              newTr.appendChild(newTd);// добавляем ячейку в строку
              //appendChild() - добавляет новый элемент в конец.
            }
          table.appendChild(newTr); //добавляем строку в таблицу
       }

 return table;  
}

	function WriteRezultoNods(less, more, mass, table)//Вывод результатов в форму
  {
      var Show = document.getElementById("show");
       Show.innerHTML =''; Show.appendChild(table);
	      document.getElementById('weight').value= mass;
	      document.getElementById('more').value= more;
	      document.getElementById('less').value= less;
	      document.getElementById('difference').value= more-less;
}
</script>
<div align=center>
<font style="font-size: 15pt;" color="#330000" face="Tahoma">Друзья-золотоискателя нашли клад золотых украшений древней цивилизации Инков. Они решили поделить их по весу. Договорились, что раздел будет честным, если разница между двумя частями будет минимальная. Кому же достанется часть большего веса решит "монета".<br>Как правильно поделить золото?</font>
<table>
<form>
	<tr><td><font style="font-size: 15pt;" color="#330000">Количество монет:</font></td><td><input type="text" value="" name="col"></td></tr>
	<tr><td><font style="font-size: 15pt;" color="#330000">Минимальный вес монеты:</font></td><td><input type="text" value="" name="minweight"></td></tr>
  <tr><td><font style="font-size: 15pt;" color="#330000">Максимальный вес монеты:</font></td><td><input type="text" value="" name="maxweight"></td><td><input type="submit" onclick="start(col.value, minweight.value, maxweight.value)" value="Разделим золото"></td></tr>
	<tr><td><font style="font-size: 15pt;" color="#330000">Общий вес золота:</font></td><td><textarea id="weight" rows="1" cols="15"></textarea></td></tr>
	<tr><td><font style="font-size: 15pt;" color="#330000">Большая часть:</font></td><td><textarea id="more" rows="1" cols="15"></textarea></td></tr>
	<tr><td><font style="font-size: 15pt;" color="#330000">Меньшая часть:</font></td><td><textarea id="less" rows="1" cols="15"></textarea></td></tr>
	<tr><td><font style="font-size: 15pt;" color="#330000">Разница в весе:</font></td><td><textarea id="difference" rows="1" cols="15"></textarea></td></tr>
</form>
</table>
</div>
<div id="show"></div>
</body>
</html>
Ответить с цитированием
  #5 (permalink)  
Старый 15.06.2014, 04:16
Профессор
Отправить личное сообщение для jsnb Посмотреть профиль Найти все сообщения от jsnb
 
Регистрация: 15.03.2014
Сообщений: 561

Сообщение от SnowyWolf
пробовал, только сценарий выполняется и сразу исчезает.
В submit допиши return false чтобы форма не отправлялась.
Ответить с цитированием
  #6 (permalink)  
Старый 15.06.2014, 10:59
Аватар для SnowyWolf
Интересующийся
Отправить личное сообщение для SnowyWolf Посмотреть профиль Найти все сообщения от SnowyWolf
 
Регистрация: 18.03.2014
Сообщений: 29

Сообщение от jsnb
В submit допиши return false чтобы форма не отправлялась.
Куда именно дописывать? Так:
<input type="submit return false" onclick="start(col.value, minweight.value, maxweight.value)" value="Разделим золото">
?
Или так:
<input type="submit" return false onclick="start(col.value, minweight.value, maxweight.value)" value="Разделим золото">
?
Если как в первом случае, то ничего не меняется, если как во втором, то это получается не кнопка, а просто поле ввода!
Ответить с цитированием
  #7 (permalink)  
Старый 15.06.2014, 12:04
Аватар для Erolast
Профессор
Отправить личное сообщение для Erolast Посмотреть профиль Найти все сообщения от Erolast
 
Регистрация: 24.09.2013
Сообщений: 1,436

return false - это, очевидно, js-код. И дописывать его надо, очевидно, к js-коду.
<input type="submit" onclick="start(col.value, minweight.value, maxweight.value); return false;" value="Разделим золото">
Ответить с цитированием
  #8 (permalink)  
Старый 15.06.2014, 19:05
Аватар для SnowyWolf
Интересующийся
Отправить личное сообщение для SnowyWolf Посмотреть профиль Найти все сообщения от SnowyWolf
 
Регистрация: 18.03.2014
Сообщений: 29

Erolast,
ага, спасибо! Заработало!)
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
background resize IceDvl jQuery 4 25.04.2014 17:54