2014-12-24 101 views
0

我想控制輸入字段使用jQuery以前我只有數字,可以使用$(this).autoNumeric(),現在我已經到處需要改變輸入字段的形式'數字破折號「。輸入文本字段,只接受數字破折號

我已經嘗試過幾個鏈接,從這個網站以及其他沒有任何成功, 我只是初學者的用戶界面,請幫助我。

回答

2

您將需要使用正則表達式。我不會完全依賴HTML5輸入蒙版。

/^\d+(-\d+)*$/ 

如果沒有更強的約束條件就足夠了。

$("#myfield").change(function(){ 
    var isValid = $(this).val().match(/^\d+(-\d+)*$/); 
    if(!isValid){ 
    alert('only numbers and hyphesn please'); 
    return false; 
} 
}); 

簡單的HTML:

<input id="myfield"> 

演示:http://jsbin.com/jeziqifebu/1/edit


UPDATE:

用戶想要numberstrings,即3.4.5不僅僅是十進制數字。

$("#myfield").change(function(){ 
    var pattern = /^\d+(\.\d{1,2})?(\.\d{1,2})?(-\d+(\.\d{1,2})?(\.\d{1,2})?)?$/; 
    var isValid = $(this).val().match(pattern); 
    if(!isValid){ 
     alert('only numbers or valid range separated by hyphens please'); 
    return false; 
    } 
}); 

這將需要

2 
2-3 
2.3 
2.3-4 
2.3.4-5 
2.3.4-5.6 
2.3.4-5.6.7 

演示:http://jsbin.com/hivikudova/2/edit

+0

我的意思是3.4.0-54.0,但允許其他字符了。 – Atiq

+0

@Atiq,我已經更新了我的答案 – briansol

+0

我正在使用通過類,但它不工作,做這樣的事情,它允許所有的字符進入,我想限制 '$('。left_length' ).change(function(){ var pattern = /^\d+(\.\d{1,2})?(\.\d{1,2})?(-\d+(\。\ d {如果(!isValid){ alert(012)}?(\。\ d {1,2})?)$ $;; var isValid = $(this).val()。match(pattern); (「只有數字或有效範圍內用連字符隔開請」); 將返回false;} });' – Atiq

0

該解決方案犯規讓你輸入任何東西,但數字和一個破折號:JS FIDDLE

<input onkeypress="return isNumberKey(event);"> 

var dashCount = 0; 
function isNumberKey(evt) 
{ 
    var charCode = (evt.which) ? evt.which : event.keyCode; 
    if (charCode == 45) { 
     dashCount++; 
    } 
    if ((charCode > 47 && charCode <58) || (charCode == 45 && dashCount < 2)) 
    { 
     return true; 
    } 
    return false; 
}