2014-01-08 2 views
1

У меня есть проблема с функцией инкремента, которая позволяет пользователям нажимать кнопку для добавления или удаления билетов. Однако я не хочу, чтобы пользователь мог входить в негатив и все закручивать. Есть ли способ остановить это. Рабочую демонстрационную версию можно найти по адресу http://kentishtours.co.uk/destinations/canterbury.php, а синие кнопки «-» «+» - это то, о чем я говорю.Стоп-значения js идут отрицательно

Благодаря

enter image description here

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

var adult = $('#adult'), 
child = $('#child'), 
total = $('.total'), 
value = $('#value'), 
increase = $('#increase'), 
decrease = $('#decrease'), 
increasec = $('#increasec'), 
decreasec = $('#decreasec'); 

var calulate_price = function(a, c){ 
var p1 = 18, 
    p2 = 10, 
    PA = a * p1, 
    PC, d; 

if(a >= 1) PC = c * p2; 
else PC = c * p1; 

d = PA + PC; 

total.text("£ " + d + ".00"); 
value.val(d); 
}; 

increase.click(function(){ 
var a = Number(adult.val()); 
var c = Number(child.val()); 
adult.val(++a); 
calulate_price(a, c); 
}); 
decrease.click(function(){ 
var a = Number(adult.val()); 
var c = Number(child.val()); 
adult.val(--a); 
calulate_price(a, c); 
}); 
increasec.click(function(){ 
var a = Number(adult.val()); 
var c = Number(child.val()); 
child.val(++c); 
calulate_price(a, c); 
}); 
decreasec.click(function(){ 
var a = Number(adult.val()); 
var c = Number(child.val()); 
child.val(--c); 
calulate_price(a, c); 
}); 
+2

существующий код поможет – Rob

+1

Как правило, мы всегда хотим код. – elclanrs

+1

Небольшой образец кода добавления поможет нам найти вашу ошибку. –

ответ

5
decrease.click(function(){ 
    var a = Number(adult.val()); 
    var c = Number(child.val()); 
    if(a>0){ 
    adult.val(--a); 
    } 
    calulate_price(a, c); 
}); 
+0

Большое спасибо! Только новичок, такой простой, если вы знаете, как это сделать. Еще раз спасибо! – Alex

+1

Да, это работает, но отключение кнопки - лучшее решение, поскольку это касается пользователя – NSjonas

3

Отключить кнопку минус, если value == 0

decrease = $('#decrease'); 

//set inital state 
if(Number(adult.val())==0){ 
    $('#decrease').attr("disabled", "disabled"); 
}else{ 
    $('#decrease').removeAttr("disabled"); 
} 

increase.click(function(){ 
    var a = Number(adult.val()); 
    adult.val(++a); 
    //make sure its enabled any time we're > 0  
    if(a>0){ 
    $('#decrease').removeAttr("disabled"); 
    } 
    var c = Number(child.val()); 
    calulate_price(a, c); 
}); 
decrease.click(function(){ 
    var a = Number(adult.val()); 
    adult.val(--a); 
    //disable if we are back to 0 
    if(a==0){ 
    $('#decrease').attr("disabled", "disabled"); 
    } 
    var c = Number(child.val()); 
    calulate_price(a, c); 
}); 
+0

Простые проблемы требуют простых решений – NSjonas

+1

+1 возможно, немного упростить, например '$ (" # уменьшение "). prop ('disabled',! a);' –

+0

определенно. Я бы обновил, но поскольку это решение нацелено на новичка, я думаю, что то, что мне может быть легче читать и понимать. – NSjonas

5

Вы можете сделать несколько вещей:

  • Отключить кнопку, когда 0, так что вы не можете пойти отрицательным.
  • Если пользователь отправляет отрицательное значение, всегда принимайте 0 (проверка на стороне сервера)
  • Если вы нажмете на значок минуса и значение ниже 0, сделайте это снова 0.

Всего 3 возможных варианта, я уверен, что осталось больше. ;)

Обратите внимание, что вы всегда хотите проверить на стороне сервера ввода, особенно когда речь идет о деньгах :)

+0

ха-ха и лучшим решением является тот, который я предложил первым и получил - 1 для. Хорошая работа – NSjonas

+0

Ваша записка, которую вы отредактировали впоследствии. Рад, что у меня есть очки, они скоро станут щедростью. – Rob

+0

да ... мой оригинальный ответ мог быть сформулирован лучше, а грамматика проверена до того, как я разместил сообщение. – NSjonas

0

Просто установите вар number или то, что вы используете, чтобы сохранить номер, который вы хотите проверить. Затем просто используйте if, чтобы проверить, меньше ли это значение.

if (number < 0) 
{ 
    //not correct 
} 
else 
{ 
    //correct 
} 
Смежные вопросы