2015-04-17 3 views
1

Я создаю сайт для ресторана и хочу, чтобы пользователи могли выбирать, сколько еды они хотели бы заказать. Я очень новичок в JavaScript и сейчас собираюсь в школу, но тем временем мне нужна помощь в этом вопросе.Расчет суммы из количества продукта

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

Вот мой HTML:

<tr> 
    <td>Bruschetta con Crema di Agliotoa</td> 
    <td><input type="text" value="" name="QTY" id="QTY" onKeyUp="multiply()"/></td> 
    <td><input type="text" name="PPRICE" id="PPRICE" value="8" /></td> 
    <td><input type="text" name="TOTAL" id="TOTAL" /></td> 
</tr> 

И мой простой сценарий:

function multiply() 
{ 
    a = Number(document.getElementById('QTY').value); 
    b = Number(document.getElementById('PPRICE').value); 
    c = a * b; 

    document.getElementById('TOTAL').value = c; 
} 
+0

Я понимаю, что это всего лишь упражнение, не так ли? Вы можете заменить свой ввод PPRICE только ценой в обычном html-тексте; а затем в javascript hardcode значение цены. – zed

+0

Что вы хотите точно? – youssif

+0

Если это должен быть вход, то вы можете отключить его или читать в зависимости от того, что вам нужно сделать. Вот [разница между ними] (http: // stackoverflow.ком/вопросы/7730695/Что-разностный-между-инвалиды-инвалиды-и-чтения-чтения-для-HT). – zed

ответ

1

"... он взял меня навсегда, чтобы заставить его работать"

Некоторые намеки:

Предположительно элементы управления в форме, так что вы можете используйте это, чтобы легче ссылаться на элементы. Для начала передачи ссылки из элемента, вызывающего слушателя:

<input name="QTY" onKeyUp="multiply(this)"> 

Затем в функции, вы можете легко ссылаться на другие элементы управления. Не забудьте сохранить локальные переменные с варом и умножение неявно преобразует значения Number:

function multiply(element) { 
    var form = element.form; 
    form.TOTAL.value = element.value * form.PPRICE.value; 
} 

предложение следовать за другим в отношении создания общего ReadOnly, и применить проверку на сервере, чтобы убедиться, что вы получите приемлемые данные (клиент проверка на стороне только для удобства, он не имеет ценности для безопасности или очистки данных).

Для размещения, ваш HTML может быть столь же просто, как:

<form> 
    <input name="QTY" onKeyUp="multiply(this)"><br> 
    <input name="PPRICE" value="8"><br> 
    <input name="TOTAL" readonly> 
</form> 
+0

Итак, я пытаюсь это сделать прямо сейчас, и он не работает, потому что, хотя у меня есть все в форме, это таблица в форме и она не будет вызывать табличный тег? –

+0

Хорошо, я понял! Я помещаю каждый элемент меню в тег формы, и он умножает его красиво! Большое вам спасибо за то, что вы мне это показали, я очень благодарен! –

+0

Итак, мне пришлось изменить свой код, так что это уже не таблица ... –

0

Добавьте следующий атрибут к входу PPRICE, чтобы предотвратить большинство пользователей изменять цену:

disabled="disabled" 

Важно не доверять этим данным, если он отправляется на сервер, хотя он все еще доступен для редактирования, просто не легко ,

1

Вы можете добавить readonly or disabled attribute в поле цены.

function multiply() { 
 
    a = Number(document.getElementById('QTY').value); 
 
    b = Number(document.getElementById('PPRICE').value); 
 
    c = a * b; 
 

 
    document.getElementById('TOTAL').value = c; 
 
}
<tr> 
 
    <td>Bruschetta con Crema di Agliotoa</td> 
 
    <td> 
 
    <input type="text" value="" name="QTY" id="QTY" onKeyUp="multiply()" /> 
 
    </td> 
 
    <td> 
 
    <input type="text" name="PPRICE" id="PPRICE" value="8" readonly/> 
 
    </td> 
 
    <td> 
 
    <input type="text" name="TOTAL" id="TOTAL" /> 
 
    </td> 
 
</tr>

+0

Эй, я пробовал этот код, и он отлично работает для 1 пункта меню, но когда я добавляю его ко всем моим пунктам меню, ничего не работает. У вас есть предложение заставить его работать для всех? Спасибо, что помогли! –

0

Вы можете установить тип входа, чтобы скрыть, чтобы скрыть текстовое поле вместо установки только для чтения или отключить атрибут, значение PPRICE можно получить с помощью JavaScript также:

<tr> 
    <td>Bruschetta con Crema di Agliotoa</td> 
    <td> 
    <input type="text" value="" name="QTY" id="QTY" onKeyUp="multiply()" /> 
    </td> 
    <td> 
    <input type="hidden" name="PPRICE" id="PPRICE" value="8"/> 
    8 
    </td> 
    <td> 
    <input type="text" name="TOTAL" id="TOTAL" /> 
    </td> 
</tr> 
Смежные вопросы