Събиране с JavaScript

4 отговора 333 прегледа
#1

Събиране с JavaScript

Имам малко тъп въпрос...
Значи възможно ли е с JavaScript да събера стойностите (сбор) от две инпут полета, които съдържат не само числа. Примерно поле1 валуе="$4" + поле2 валуе="$9" и като сбор да ми даде "13". Може би трябва да взема със субстринг само числата и после с един евал... Ама полето може и да е така "2 лв." и така "$ 5". Как мога да го направя без 1000 проверки на валуето символ по символ (то не че се сещам как да стане в момента де)?
Всяка помощ ще ми е от полза!

Отговор
в отговор на Пpoблeм #2

Try this way



<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "[линк]">
<html>
<head>
<title></title>
<script type="text/javascript">
String.prototype.getFirstNumber=function()
{
var myVal=new String(this.valueOf());
var myNum= myVal.match(/\d+/);
return myNum;
}
function sumVal(){
var first=document.getElementById("first");
var second=document.getElementById("second");
var sum=parseInt(first.value.getFirstNumber())+parseInt(second.value.getFirstNumber());
alert("The sum is "+sum);
}
</script>
<style type="text/css">
div{
text-align: center;
}
</style>
</head>
<body>
<div>
<input type="text" id="first">
<input type="text" id="second">
<input type="button" value="Calculate" onclick="sumVal()">
</div>
</body>
</html>




От неизбежното се възмущава само този, който е неразумен.
Отговор
в отговор на Учeщ #3

Пич,

По-елегантно решение от това едва ли ще намериш

(офф)Учещ, защо си зелен (/офф)

Отговор
в отговор на Учeщ #4

А защо не просто...

var sum = parseFloat(first.value.replace(/[^\d\.]+/g, '')) + parseFloat(second.value.replace(/[^\d\.]+/g, ''));

Понеже става дума за цени доколкото видях, а те не са цели числа обикновено...

There are three determined states the cat could be in: Alive, Dead, and Bloody Furious.
Отговор
в отговор на Koтapakът нa Шpьoдинrep #5

Прав си ..

Не се бях сетил че може да са float числа. Мен ме по-кефи със прототип, обаче. Пък е и по-късо. Ето подбрена версия.


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "[линк]">
<html>
<head>
<title></title>
<script type="text/javascript">
String.prototype.toFNum=function(){
return parseFloat(this.replace(/[^\d\.]+/g, ''));
}
function sumVal(){
var first=document.getElementById("first");
var second=document.getElementById("second");
var sum=first.value.toFNum()+second.value.toFNum();
alert("The sum is "+sum);
}
</script>
<style type="text/css">
div{
text-align: center;
}
</style>
</head>
<body>
<div>
<input type="text" id="first">
<input type="text" id="second">
<input type="button" value="Calculate" onclick="sumVal()">
</div>
</body>
</html>



От неизбежното се възмущава само този, който е неразумен.
Отговор