2017-09-19 92 views
1

我有一個數量文本框,不應該允許負號,'。' 字符。防止在文本框中的點

我試過一個jQuery塊,但它允許'。'。我想阻止'。'在文本框中

$(document).ready(function() { 
 
$('#used_quantity').keypress(function(event) { 
 
    if ((event.which != 46 || $(this).val().indexOf('.') != -1) && (event.which < 48 || event.which > 57)) { 
 
    event.preventDefault(); 
 
    } 
 
}); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script> 
 
<input type="text" id="used_quantity">

回答

3

與​​event.Only匹配鍵值做,不與輸入

Updated

與退格的字符串

$(document).ready(function() { 
 
    $('#used_quantity').keydown(function(event) { 
 
    if ((event.which != 46) && (event.which < 48 || event.which > 57) && (event.which != 8)) { 
 
     event.preventDefault(); 
 
    } 
 
    }); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script> 
 
<input type="text" id="used_quantity">

+0

這也使得它,所以你不必退格,是因爲他還想要什麼? – Granny

+0

看到我更新的答案。 backspace逃避防止 – prasanth

1

您需要修改條件event.which == 46 || event.which == 45分別忽略.-

$(document).ready(function() { 
 
    $('#used_quantity').keypress(function(event) { 
 
    if (event.which == 46 || event.which == 45 || event.which < 48 || event.which > 57) { 
 
     event.preventDefault(); 
 
    } 
 
    }); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script> 
 
<input type="text" id="used_quantity">

0

變化的條件爲(((event.which == 46 || event.which == 45 || $(this).val().indexOf('.') != -1)) || (event.which < 48 || event.which > 57))。上keypress事件

$(document).ready(function() { 
 
    $('#used_quantity').keypress(function(event) { 
 
    
 
    if (((event.which == 46 || event.which == 45 || $(this).val().indexOf('.') != -1)) || (event.which < 48 || event.which > 57)) { 
 
     event.preventDefault(); 
 
    } 
 
    }); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<input type="text" id="used_quantity">

+0

這允許字符 – user3386779

+0

對不起,我沒有注意到,現在我編輯我的條件爲((((event.which == 46 || event.which == 45 || $(this).val( ).indexOf('。')!= -1))||(event.which <48 || event.which> 57))'現在是有效的。 –

0

試試這個:

$('#used_quantity').bind("change input", function() { 
    var value = $(this).val().replace(/([^0-9].*)/g, ""); 
    $(this).val(value); 
}) 
1

請檢查該代碼。它會工作。刪除

if ((event.which != 46 || $(this).val().indexOf('.') != -1) && 
(event.which < 48 || event.which > 57)) 

條件

if ((event.which < 48 || event.which > 57) && event.which != 45) { 

檢查jsliddle EXAMPLE HERE