2016-07-08 3 views
1

Я работаю на сайте биткойнов, и у каждого пользователя есть баланс на счете, который выглядит следующим образом: 1.26584000 или 0.00032568. Обратите внимание, что после десятичного разряда всегда есть 8 цифр.Только цифры в текстовом поле не превышают баланс счета

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

Баланс счета хранится в переменной PHP ($ баланса) в виде строки, как это:

$balance = number_format((float)$activeUser['balance'], 8, '.', ''); 

В настоящее время текстовое поле У меня есть выглядит следующим образом:

<input class="form-control col-md-10 input-lg" type="text" value="0.00000000" /> 

я уже нашел некоторые решения с Javascript, но я не мог получить результат, каким я хотел.

+0

Каков ваш ожидаемый результат и какая у вас проблема? acing с кодом java-script? –

+0

Я просто хочу получить (десятичный) номер, который находится между 0 и балансом пользователей. Я хочу использовать этот номер для хранения в базе данных, что не важно, это только то, что пользователь не может ошибиться с неправильными входами. –

+0

Проблемы с min = "" и max = "" состоят в том, что он не работает с десятичными знаками. И когда я попытался с javascript, я получил ту же проблему с десятичными знаками. К сожалению, у меня больше нет этого кода. –

ответ

3

Просто сравните два значения и найти это минимум:

$(document).ready(function() { 
 
    var accountMax = (Math.random() * 10).toPrecision(8); 
 
    console.log('Account balance: '+accountMax); 
 
    
 
    $('#value-input').change(function() { 
 
    var inputed = parseFloat($(this).val()).toPrecision(8); 
 
    
 
    $(this).val(Math.max(0, Math.min(inputed, accountMax)).toPrecision(8)); 
 
    }); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
BitCoinHacker3000: <input type="text" value="0.00000000" id="value-input"/>

+0

кажется правильным для меня в соответствии с желанием OP. + 10 –

+0

это приятно, но я хотел бы отметить, что, учитывая, что это имеет дело с финансами людей, OP должен также учитывать проверку на стороне сервера на PHP. Клиентская сторона хороша для удобства пользователя, но ее очень легко обойти. Таким образом, PHP-код, получающий обратную передачу, также должен проверить, что содержимое текстового поля не больше максимального доступного баланса, и если да, сообщите об ошибке, чтобы пользователь мог внести изменения. – ADyson

+0

@ADyson Вы правы, но если вы хотите проверить ввод при каждом нажатии клавиши, то лучше сначала полагаться на простую проверку JS и только передавать информацию на проверку PHP с более глубокими правилами. – Justinas

0

вызова функции при нажатии клавиши/на размытости даже и сравнить значение введенного пользователя значение с балансовой стоимостью счета и замените его своим значением по умолчанию, таким как максимальный предел пользователя

if (usersvalue > accountbalance) { 
     $('#valuetextbox').val=accountbalance; 
    /* this is used to replace the value use the id or class selector to replace the value */ 
} 
Смежные вопросы