2013-08-07 2 views
8

Я сделал небольшой калькулятор в javascript, где пользователи вводят процентную ставку и сумму, которую они хотят заимствовать, и она подсчитывает, сколько стимулов они могут получить.Удаление всего, за исключением чисел в строке

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

Сумма займа: £ 360000 - Процентная ставка: 4,6%

Я не беспокоюсь о знаков после запятой, поскольку они необходимы, и, похоже, не влияет на расчет, это символы, такие как £ и%, которые все испортили.

Есть простой способ вырезать эти символы из кода:

<td><input type="text" name="loan_amt" style="background-color:#FFF380;"></td> 
<td><input type="text" name="interest_rate" style="background-color:#FFF380;"></td> 


function Calculate() 
{ 
    var loan_amt = document.getElementById('loan_amt').value; 
    //this is how i get the loan amount entered 
    var interest_rate = document.getElementById('interest_rate').value; 
    //this is how i get the interest rate 

    alert (interest_rate); 
} 
+1

возможно дубликат [Regex заменить все, кроме цифр и десятичной точки] (http://stackoverflow.com/questions/4572194/regex-to-replace-everything -except-numbers-and-a-decimal-point) – mplungjan

+0

При задании вопросов здесь требуется минимум исследований. Как вы могли пропустить все другие одинаковые вопросы? – mplungjan

+0

Ваша разметка неправильная, нет идентификатора для ввода –

ответ

7

Заметим, что вы должны использовать правильный DOM идентификатор для обозначения через getElementById; Вы можете использовать .replace() метод для этого:

var loan_amt = document.getElementById('loan_amt'); 
loan_amt.value = loan_amt.value.replace(/[^0-9]/, ''); 

Но это будет удалить поплавок точку разделителя тоже. Я думаю, что это ответ на ваш вопрос, но не решение вашей проблемы. Чтобы проанализировать ввод пользователя в виде числа, вы можете использовать parseFloat() - я думаю, что это будет вернее.

+3

/g слишком .......... – mplungjan

+1

Вы можете использовать '.replace (/ [^ 0-9.]/G, '');' если вам нужно включить точку. – Moob

+2

Нет, это не очень хорошая идея, так как пользователь может ввести 1234 ...56, и это будет рассматриваться как хорошее число –

0

есть очень хороший плагин, вы можете использовать его. Например,

// включить jQuery.js и autoNumeric-1.8.3.js файлы javascript в заголовок.

<script src="http://code.jquery.com/jquery-latest.min.js" type="text/javascript"> </script> 
    <script src="autoNumeric-1.8.0.js" type=text/javascript> </script> 

    // this example uses the id selector & no options passed  
    jQuery(function($) { 
     $('#someID_defaults').autoNumeric('init');  
    }); 

см проверьте ниже http://www.decorplanit.com/plugin/

0

попробовать этот

Eg:

var a="4.52%" 
var stringLength = a.length; 
var lastChar = a.charAt(stringLength - 1); 

if(lastChar.match(/[^\w\s]/)) { 
    a=a.substring(0,stringLength - 1); 
} 

alert(a); 

Теперь вы можете типаж номер

0

Вы, вероятно, следует проверить и отвергать недопустимые значения но если вы имеют очистить хитроумную строку в число, то это должно работать:

var inStr = "a12ab.c34...h.re567"; 
var justOneDot = inStr.replace(/[.](?=.*?\.)/g, '');//look-ahead to replace all but last dot 
var outStr = parseFloat(justOneDot.replace(/[^0-9.]/g,'')).toFixed(2); //parse as float and round to 2dp 
// = 1234.57 

Играть с ним в this JS Bin.

4

Это самый короткий:

replace(/\D/g,''); 
+0

Это только работает! Спасибо –

Смежные вопросы