Мой Javascript принимает более одной десятичной точки и должен принимать только численные значения и только одну десятичную точку [дубликат]

Вы можете загрузить проект проекта Visual Studio: https://marketplace.visualstudio.com/items?itemName=VisualStudioProductTeam.MicrosoftVisualStudio2017InstallerProjects

Это позволит вам разверните пакет, но, на мой взгляд, это несколько багги. Кроме того, ссылка выше не содержит никакой документации. Для этого вам нужно перейти на другую страницу, и ответ похож на комментарии:

https://msdn.microsoft.com/en-us/library/ybshs20f (v = vs. 90) .aspx

Однако ClickOnce работал более последовательно для нас. Просто щелкните правой кнопкой мыши и выберите «Опубликовать в проекте».

Это долгий путь от старого процесса InstallShield LE, который позволил вам настроить весь процесс, включая изображения, лицензирование по кликам и т. Д.

Но у InstallShield LE был свой собственный набор проблем, и, похоже, он был полностью заброшен.

Возможно, стоит посмотреть на другие сторонние инструменты, такие как WiX ( http://wixtoolset.org/), чтобы все было правильно установлено, или даже вручную написание собственного установщика, чтобы все было на месте, где они должны быть.

12
задан Thomas 11 October 2012 в 10:30
поделиться

11 ответов

Вы не можете использовать e.preventDefault() в событии keyup. Измените его на keydown.

$(function () {
    $("input[id*='txtQty']").keydown(function (event) {


        if (event.shiftKey == true) {
            event.preventDefault();
        }

        if ((event.keyCode >= 48 && event.keyCode <= 57) || 
            (event.keyCode >= 96 && event.keyCode <= 105) || 
            event.keyCode == 8 || event.keyCode == 9 || event.keyCode == 37 ||
            event.keyCode == 39 || event.keyCode == 46 || event.keyCode == 190) {

        } else {
            event.preventDefault();
        }

        if($(this).val().indexOf('.') !== -1 && event.keyCode == 190)
            event.preventDefault(); 
        //if a decimal has been added, disable the "."-button

    });
});​

Fiddle

27
ответ дан Johan 22 August 2018 в 23:36
поделиться
  • 1
    все еще возникают проблемы .... Пожалуйста, просмотрите отредактированную часть моего кода. Я использую код ur, но он все еще принимает deciaml, который я не хочу. скажите, пожалуйста, что мне нужно исправить. благодаря – Thomas 11 October 2012 в 10:32
  • 2
    @Thomas Я думал, что вы хотите разрешить 1 & quot; dot & quot ;? Или это не должно быть разрешено вообще? – Johan 11 October 2012 в 11:55
  • 3
    никакая точка не будет разрешена. – Thomas 11 October 2012 в 19:42
  • 4
    @Thomas затем удалите чек, если его более одной точки: $(this).val().indexOf('.') !== -1 && – Johan 11 October 2012 в 20:14
  • 5
    Я знаю, что это старый пост, но это, очевидно, все же полезно, потому что это помогло мне! Во всяком случае, вы не включили десятичный ключ клавиатуры, keyCode 110. – JB06 22 December 2014 в 21:40

Мое решение принимает Copy & amp; Paste и сохраняет положение каретки. Он используется для стоимости продуктов, поэтому позволяет использовать только положительные десятичные значения. Может быть рефактористом очень легко разрешить отрицательные или целые цифры.

$(function () {
    $("input.only-positive-decimal").bind("change keyup input", function () {
            var position = this.selectionStart - 1;
                //remove all but number and .
                var fixed = this.value.replace(/[^0-9\.]/g, '');
                if (fixed.charAt(0) === '.')                  //can't start with .
                    fixed = fixed.slice(1);

                var pos = fixed.indexOf(".") + 1;
                if (pos >= 0)               //avoid more than one .
                    fixed = fixed.substr(0, pos) + fixed.slice(pos).replace('.', '');

                if (this.value !== fixed) {
                    this.value = fixed;
                    this.selectionStart = position;
                    this.selectionEnd = position;
                }
    });
});

Поместите на страницу html:

<input type="text" class="only-positive-decimal" />
1
ответ дан Carlos Toledo 22 August 2018 в 23:36
поделиться

Вы можете попробовать http://www.texotela.co.uk/code/jquery/numeric/

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

0
ответ дан Community 22 August 2018 в 23:36
поделиться

Попробуйте этот код

$('#from-amount1').keypress(function(event) {
//alert(event.which == 8);
//alert(event.which);
    if((event.which > 47 && event.which < 58) || (event.which == 46 || event.which == 8))
    {
    	 // your condition
    }
    else
    {
    event.preventDefault();
    }
}).on('paste', function(event) {
    event.preventDefault();
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
<input type="text" value="" id="from-amount1"/>

0
ответ дан karthik E 22 August 2018 в 23:36
поделиться

Создайте класс только для числа и добавьте его в свой элемент

. Это будет принимать: - backspace - delete - numbers - один десятичный символ

$(".numbers-only").keypress(function (e) {
    if(e.which == 46){
        if($(this).val().indexOf('.') != -1) {
            return false;
        }
    }

    if (e.which != 8 && e.which != 0 && e.which != 46 && (e.which < 48 || e.which > 57)) {
        return false;
    }
});
2
ответ дан mpalencia 22 August 2018 в 23:36
поделиться
$('.number').keypress(function(event) {
  if ((event.which != 46 || $(this).val().indexOf('.') != -1) && (event.which < 48 || event.which > 57)) {
    event.preventDefault();
  }
});
0
ответ дан Nana Partykar 22 August 2018 в 23:36
поделиться

Это решение применимо только в том случае, если вы не указали десятичное число или только номер от 0 до 9

$("#number").keypress(function( event ){
    var key = event.which;

    if( ! ( key >= 48 && key <= 57 ) )
        event.preventDefault();
});

, вы можете просмотреть текущий образец здесь http://jsfiddle.net/ yghD3 / 6 /

1
ответ дан Ryan S 22 August 2018 в 23:36
поделиться
element.keypress(function (e) { 
    var charCode = (e.which) ? e.which : event.keyCode;
    var dec=0;

    dec = (this.value.match(/[.]/g) || [] ).length;

    if(dec===1 && e.key=='.')
        return false;

    if (charCode > 31 && (charCode < 48 || charCode > 57) && charCode!=46)
        return false;

});
0
ответ дан Samuel Liew 22 August 2018 в 23:36
поделиться
//This will let you enter numbers only and the decimal point ones.

$(window).load(function(){
$('.number').keypress(function(event) {
  if(event.which < 46 || event.which >= 58 || event.which == 47) {
    event.preventDefault();
  }

  if(event.which == 46 && $(this).val().indexOf('.') != -1) {
    this.value = '' ;
  }  
});
});
0
ответ дан Steve 22 August 2018 в 23:36
поделиться
  • 1
    Код HTML: & lt; input type = 'text' onfocus = 'this.value = & amp; quot; & quot ;;;' class = 'number' size = '8' maxlength = '8' name = 'odd' value = 'TankOD' & gt; – Steve 3 October 2015 в 16:06

Вы можете удалить ненулевой символ при нажатии клавиши

$("#txtQty").keyup(function() {
    var $this = $(this);
    $this.val($this.val().replace(/[^\d.]/g, ''));        
});​

Демонстрация.

14
ответ дан xdazz 22 August 2018 в 23:36
поделиться
  • 1
    все еще возникают проблемы .... Пожалуйста, просмотрите отредактированную часть моего кода. Я использую код ur, но он все еще принимает deciaml, который я не хочу. скажите, пожалуйста, что мне нужно исправить. благодаря – Thomas 11 October 2012 в 10:32
  • 2
    позволяет "10.547.547" , Он не должен быть кратным ". & Quot; для десятичного числа. Не так ли? – Chandan Kumar 23 February 2018 в 12:30
0
ответ дан Nana Partykar 5 November 2018 в 21:14
поделиться
Другие вопросы по тегам:

Похожие вопросы: