Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 28.01.2015, 20:33
Аспирант
Отправить личное сообщение для DeV1doR Посмотреть профиль Найти все сообщения от DeV1doR
 
Регистрация: 07.12.2014
Сообщений: 30

Помощь с функциональностью
Хочу улучшить калькулятор. Ниже код:
<!DOCTYPE html>
<html>
	<head>
		<style type="text/css">
			button {
				text-align: center;
			}

			input {
				text-align: right;
				padding-left: 5px;
				padding-right: 5px;
			}

			button, input {
				width: 100%;
				height: 35px;
			}
		</style>
		<script type="text/javascript">
			"use strict";

			function typeSomething(id) {
				myText.value += id.innerHTML;
			}

			function clearSomething() {
				myText.value = '';
			}

			function calculation() {
				myText.value = eval(myText.value);
			}

			function minusOne() {
				myText.value = myText.value.slice(0,-1);
			}
		</script>
	</head>
	<body>
		<table id="numbers">
			<tr>
				<td colspan="4"><input id="myText" value=""/></td>
			</tr>
			<tr>
				<td colspan="3"><button id="ClearAll" onClick="clearSomething()">Clear All</button></td>
				<td><button id="Minus1" onClick="minusOne()"><-</button></td>
			</tr>
			<tr>
				<td><button id="Seven" onClick="typeSomething(this)">7</button></td>
				<td><button id="Eight" onClick="typeSomething(this)">8</button></td>
				<td><button id="Nine" onClick="typeSomething(this)">9</button></td>
				<td><button id="Devide" onClick="typeSomething(this)">/</button></td>
			</tr>
			<tr>
				<td><button id="Four" onClick="typeSomething(this)">4</button></td>
				<td><button id="Five" onClick="typeSomething(this)">5</button></td>
				<td><button id="Six" onClick="typeSomething(this)">6</button></td>
				<td><button id="Multiply" onClick="typeSomething(this)">*</button></td>
			</tr>
			<tr>
				<td><button id="One" onClick="typeSomething(this)">1</button></td>
				<td><button id="Two" onClick="typeSomething(this)">2</button></td>
				<td><button id="Three" onClick="typeSomething(this)">3</button></td>
				<td><button id="Minus" onClick="typeSomething(this)">-</button></td>
			</tr>
			<tr>
				<td><button id="dot" onClick="typeSomething(this)">.</button></td>
				<td><button id="Zero" onClick="typeSomething(this)">0</button></td>
				<td><button id="Equal" onClick="calculation()">=</button></td>
				<td><button id="Plus" onClick="typeSomething(this)">+</button></td>
			</tr>
		</table>
	</body>
</html>


1) Как сделать, что бы функция minusOne() убирала не только последний символ, а любой?(например- число 1234)Моя функция будет убирать 4, где бы не стоял мигающий курсор. Надо сделать так, что бы она удаляла последнее число там, где как раз, таки курсор.

2) Как сделать ограничение по вводу input?(нашел maxlength, но он не пашет).

3) Критику в студию)

ПС: Моя почти первая программка, не включая это Связь между графиком и выходными данными.. Спс Рони, препод заценил)
Ответить с цитированием
  #2 (permalink)  
Старый 28.01.2015, 23:19
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Сообщение от DeV1doR
где как раз, таки курсор.
input.selectionStart, input.selectionEnd - начало и конец выделения.
Сообщение от DeV1doR
нашел maxlength, но он не пашет
Уверен?
<input type="text" maxlength="1" />


Сообщение от DeV1doR
onClick
Блин глаза режет этот onClick. Че ж ты тогда не пишешь colSpan? HTML регистронезависим, пиши в нижнем регистре.
__________________
В личку только с интересными предложениями
Ответить с цитированием
  #3 (permalink)  
Старый 28.01.2015, 23:23
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Сообщение от DeV1doR
Как сделать ограничение по вводу input?(нашел maxlength, но он не пашет)
А, я понял. Ограничение идет только для ввода пользователем. А при изменении value скриптом ты уже сам должен сделить.

Замени все "myText.value = xxx" на "setValue(xxx)":

function setValue(value) {
    myText.value = value.substring(0, myText.maxLength);
}
__________________
В личку только с интересными предложениями
Ответить с цитированием
  #4 (permalink)  
Старый 29.01.2015, 00:16
Аспирант
Отправить личное сообщение для DeV1doR Посмотреть профиль Найти все сообщения от DeV1doR
 
Регистрация: 07.12.2014
Сообщений: 30

danik.js,
спс, сейчас попробуем, что получиться. На счет onClick, где один раз так увидел, и запомнилось...
Ответить с цитированием
  #5 (permalink)  
Старый 29.01.2015, 01:52
Аспирант
Отправить личное сообщение для DeV1doR Посмотреть профиль Найти все сообщения от DeV1doR
 
Регистрация: 07.12.2014
Сообщений: 30

danik.js,
function minusOne() 
			{
				var input = document.getElementById('myText');
				input.value =  input.value.slice(input[0],input.selectionStart-1) + input.value.slice(input.selectionStart);

			}


С этим вроде разобрался(спс за наводку), а
function setValue(value) {
    myText.value = value.substring(0, myText.maxLength);
}


как мне быть с
function typeSomething(id) {
                myText.value += id.innerHTML;
            }

?
Ответить с цитированием
  #6 (permalink)  
Старый 29.01.2015, 02:00
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Сообщение от DeV1doR
value.slice(input[0]
Какого хрена? Что в input[0] и зачем ты это передаешь в splice?
Сообщение от DeV1doR
как мне быть
Для начала разверни запись. += это сокращенная форма какой записи?
__________________
В личку только с интересными предложениями
Ответить с цитированием
  #7 (permalink)  
Старый 29.01.2015, 02:07
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Сообщение от danik.js
Для начала разверни запись
Можно иначе решить проблему.
Ты плюсуй не всю innerHTML, а только ту ее часть, которая еще поместится в value. Хотя у тебя innerHTML для всех кнопок состоит из одного символа, можно и без substring обойтись. Без разницы в общем.
__________________
В личку только с интересными предложениями
Ответить с цитированием
  #8 (permalink)  
Старый 29.01.2015, 02:08
Аспирант
Отправить личное сообщение для DeV1doR Посмотреть профиль Найти все сообщения от DeV1doR
 
Регистрация: 07.12.2014
Сообщений: 30

danik.js,
в input[0] отсчет с 1 символа, а в slice передаю, что бы скопировать(ну я хз, как по другому сделать).

myText.value += id.innerHTML -> myText.value = myText.value +id.innerHTML.
Ответить с цитированием
  #9 (permalink)  
Старый 29.01.2015, 02:46
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Сообщение от DeV1doR
в input[0] отсчет с 1 символа
Че несешь?

<input value="bla bla" id="myText" />
<script>
var input = document.getElementById('myText');
alert(input[0]);
</script>


Сообщение от DeV1doR
в slice передаю, что бы скопировать(ну я хз, как по другому сделать).
Открой документацию по методу slice и посмотри какие аргументы он принимает. Пока что у тебя получается вызов .slice(undefined, 123)
__________________
В личку только с интересными предложениями
Ответить с цитированием
  #10 (permalink)  
Старый 29.01.2015, 02:58
Аспирант
Отправить личное сообщение для DeV1doR Посмотреть профиль Найти все сообщения от DeV1doR
 
Регистрация: 07.12.2014
Сообщений: 30

danik.js,
https://developer.mozilla.org/ru/doc...ts/Array/slice
Если begin опущен, slice() начинает работать с индекса 0.

input.value = input.value.slice(0,input.selectionStart-1) + input.value.slice(input.selectionStart);
Может пишу опять хрень, но так?
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Бесплатная помощь новичкам iCanary Общие вопросы Javascript 11 30.11.2015 20:35
помощь по jquerry анимации rev27 Элементы интерфейса 6 23.04.2014 03:06
Требуется помощь bboulevard Ваши сайты и скрипты 14 02.12.2013 17:47
Нужна помощь: Slider wheel Alex555 Мобильный JavaScript 0 15.05.2013 18:06
нужна помощь dominosoko Серверные языки и технологии 4 14.03.2010 02:17