2015-01-29 2 views
1

У меня есть следующий код для форматирования чисел в качестве типов пользователей:JQuery - небольшой фрагмент для форматирования чисел не работает, как ожидалось

//Add commas as user types 
$('input.num_format').keyup(function(event) { 

    // skip for arrow keys 
    if(event.which >= 37 && event.which <= 40) return; 
    // format number 
    $(this).val(function(index, value) { 
    return value.replace(/\D/g, "").replace(/\B(?=(\d{3})+(?!\d))/g, ","); 
    }); 
}); 

рабочей JS Fiddle кода выше: http://jsfiddle.net/d0u5hu36/

Теперь после того, как делает фронт -end для моего сайта, я делаю бэкэнд с PHP, но когда я пытаюсь отправить данные из ввода, который имеет вышеприведенный фрагмент JS, я просто получаю первые 3 символа из числа, например: от «350 000», я просто могу представить свой стол «350», почему это происходит? Я бы хотел представить «350000», я считаю, что это связано с клиентской стороной.

Дополнительная информация: колонка MySQL является «MEDIUMINT (9)»

ответ

1

При подаче значения, попробуйте кодирующая символ «» перед отправкой, так как, имеет особое значение, если вы отправляете через форму, вы можно использовать

encodeURIComponent() 

на стороне сервера с помощью PHP, вам может потребоваться сделать дополнительные расшифровывает

utf8_decode(string) 

Например, в то время как выполняя форму представления через GET идеальный URL будет выглядеть [одно имя управления нескольких значений] [использование] Comma

test.php?parameter=a1,a2,a3 

Надеется, что это помогает!

UPDATE

Попробуйте зацикливание переменную [переменную для имени управления, где значение форматируемого с запятой] в POST/GET в PHP и объединить их в строке [если вы используете POST]

$str = ""; 
foreach($_POST['<control_name>'] as $item) 
{ 
    $str = $str.$item; 
} 
echo $str; 
+0

Спасибо, что нашли время, но это был не совсем ответ на то, что я спросил. Ты дал мне эту идею;) – Daniel

0

Благодаря @Hemant за предоставленную мне идею. Это на самом деле проблема на стороне сервера, так как поле является целым числом, которое игнорирует числа после запятой. Так что я сделал удаление всех символов, кроме чисел, со следующим кодом регулярного выражения:

preg_replace('#[^0-9]#','',strip_tags($string)); 
Смежные вопросы