2015-10-09 4 views
0

Я застрял в проверке значения поплавка. Я хочу разрешить положительные и отрицательные значения поплавка . Я попробовал следующий блок при нажатии клавиш в поле вводаПроверка отрицательных значений поплавка

function allowFloatingNumberOnly(e, id){ 
    if ((e.which !=45 ) && (e.which !=46 || $(id).val().indexOf('.') != -1) && e.which != 8 && e.which != 0 && (e.which < 48 || e.which > 57)) { 
     return false; 
    } 
} 

Где id является идентификатором ввода текста. Он терпит неудачу с отрицательным символом. Я в состоянии дать ввод как 43--44, -43-211. Я хочу, чтобы пользователь не вводил отрицательный знак в неправильном месте. Благодаря

+0

Почему бы просто не использовать 'parseFloat()' и проверить результат для 'NaN'? –

+0

@RoryMcCrossan - [потому что (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/parseFloat#Browser_compatibility) – Amit

+0

@Amit thats 'Number.parseFloat()', а не 'parseFloat (value)', который поддерживается повсеместно. https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/parseFloat –

ответ

0

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

function isValid(str) { 
    return !isNaN(Number(str)); 
} 

Это звучит, как вы хотите пойти дальше и проверить, будет ли следующий ключ привести к неверному номеру , Это сложнее, но вот один из способов сделать это:

$(function() { 
 
    $('input.number').on('input', function() { 
 
     var $el = $(this); 
 
      val = $el.val(), 
 
      oldValue = $el.data('oldValue'); 
 

 
     if (val !== '-' && 
 
      isNaN(Number(val)) && 
 
      val !== oldValue) { 
 
      $el.val(oldValue); 
 
     } else { 
 
      $el.data('oldValue', val); 
 
     } 
 
    }); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div> 
 
    <input class="number" type="text" /> 
 
    <div> 
 
     <input type="text" /> 
 
    </div> 
 
    <div> 
 
     <input class="number" type="text" /> 
 
    </div> 
 
</div>

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