Добаване на стойности разделени със запетайки

Hous

Registered
Код:
<input class="test" type="text"/>

<script>
jQuery("#mybutton").click(function(){
  var hval=jQuery('.whichcategoryinput_h').val();
  jQuery('.test').val(hval+jQuery(this).data("id")+',');
});
</script>
С този код взимам старата стойност от input поле и добавям новата, която съм кликнал, като ги разделям със запетаи.

Проблема ми е обаче ако имам:
стара стойност:2
и кликна на 5 6 1 9
новата стойност става:2,5,6,1,9,

После със EXPLODE (php) на стойностите, получавам една стойност в повече която реално е празна заради допълнителната запетая, имате ли идея как да направя стойностите така, че да се разделят със запетаи но в същото време да не се добавя след последния елемент?

Тоест да стане в моя случай: 2,5,6,1,9
Вместо:2,5,6,1,9,
 
Можеш в php да напишеш trim($input, ',');

за js, само ще ти напиша нещо като псевдокод

[js]var input = $('input.text');
$('button').on('click', function() {
if(input.val() != '') {
input.val(input.val() + ',');
}
input.val(input.val() + 'число');
});[/js]

иначе казано --
когато е натиснат бутон за добавяне на число:
- ако полето не е празно, добави запетайка
- добави числото
 
С php trim не се получи номера, и опитах др вариант:
Код:
$mystring="3,5,6,7,8,9,";
$bla=explode(","$mystring);
foreach($bla as $blaa){
if(ctype_digit($blaa){
//we only get 3 5 6 7 8 9  :)
}
}

а за JS се това което си дал ми е ясно какво прави, проблема е че дори да не е празна стойността пак има една запетайка в повече.
Но мисля, че със горния метод се справих. Благодаря все пак!
 
Много сложно го правиш... ето ти 2 варианта:

http://codepad.org/EiWlI2ZL
PHP:
<?php
$string = '1,2,3,4,';

//variant 1
echo rtrim($string, ','); // и просто trim също работи. не ми е ясно защо при теб не е станало..

//variant 2
echo substr($string, 0, -1);
 
А няма ли да си решиш проблема, просто вместо да добавяш запетая след въведената стойност, да я въвеждаш отпред :idea:
 
Да логично звучи, но не става, понеже стойността варира и .. (малко е трудно за обяснение) но се получава наслагване понякога от типа ",,2,3,4," за това ctype_digit няма как да ме предаде :)
 
Вярно, че е по-бавен от обикновените функции, но като си спестяваш пет реда код - foreach, if проверка и две функции, защо да не използваш регулярен израз?

PHP:
preg_match_all("/\d+/", $string_with_commas, $numbers);
print_r($numbers);
Мисля, че числата ще са всичко след първия елемент в $numbers.
 

Back
Горе