2013-01-08 95 views
0

我不希望允許文本框中的小數值..我已經編寫了代碼,但它只在刪除整個值然後重新插入時纔有效。 我的問題是當我嘗試編輯現有的值時,需要十進制數字。 Here's the jsfiddle。這是參考代碼:不要在輸入字段中輸入小數值

HTML

<input id="Amt" type="text" value="$78.00"> 

jQuery的

$(document).ready(function() { 

    $("#Amt").keydown(function (e) { 
     if ((!e.shiftKey && !e.ctrlKey && !e.altKey) && ((e.keyCode >= 48 && e.keyCode <= 57) || 
       (e.keyCode >= 96 && e.keyCode <= 105))) { 
     } 
     else if (e.keyCode != 8 && e.keyCode != 46 && e.keyCode != 37 && e.keyCode != 39 && 
        e.keyCode != 9) { 
      e.preventDefault(); 
     } 
    }); 

    $("#Amt").keyup(function (e) { 
     var value = $(this).val(); 
     var newValue = parseFloat(value).toFixed(2); 
     if (!isNaN(newValue)) { 
      $(this).val(newValue); 
      $(this).caret(newValue.length - 3, newValue.length - 3); 
     } 
    }); 
}); 
+0

問題是,你正在驗證/篩選的關鍵。你可以用模糊來代替嗎? – geedubb

+0

嗯抱歉沒有得到你... @ geedubb ...你是否建議我改變事件? – Scorpio

+0

你是否試圖阻止用戶在文本框中輸入'.'字符? 或者你是否試圖阻止像'3.14'這樣的值在用戶輸入值後被保存爲javascript? 或者您想將用戶的答案向上或向下四捨五入爲有兩位小數的整數值? 它看起來像用戶可以輸入'78',你會爲他們產生'78.00'?這是你想要的嗎?你是否希望用戶只輸入全部美元?你會追加'.00'到任何值? –

回答

1

您可以使用string砍掉小數,重新追加」 .00' ,如果你想保持這種格式。

$("#Amt").blur(function (e) { 
    var value = this.value.replace(/\$/g,""); 
    var dotPos = value.indexOf("."); 
    var dollars = dotPos>-1?value.substring(0,dotPos):value; 
    $(this).val(dollars+".00"); 
    }); 

    $("#Amt").blur(); 

http://jsfiddle.net/ZUj8M/14/

+0

你可以請回答一件事...是否可能截斷文件加載$符號? – Scorpio

+0

你想從輸入字段中刪除$?你能確定它會在文件準備好時填充嗎? – robC

+0

是它出來作爲querystring ..從另一種形式 – Scorpio

0

我會去了解它在一個完全不同的方式,只是防止小數從到達那裏第一名。 http://jsfiddle.net/ZUj8M/7/

$(document).ready(function() { 

    var timer; 
    $("#Amt").on("keydown paste input",function (e) { 
    var el = this, 
     origval = this.value; 
    clearTimeout(timer); 
    timer = setTimeout(function() { 
     if (origval != el.value && /\./.test(el.value)) { 
     el.value = origval; 
     alert("Decimals are not allowed in this field."); 
     } 
    }, 0); 
    }); 
    if (/\./.test($("#Amt").val())) { 
    $("#Amt").val($("#Amt").val().replace(/\./g,"")); 
    } 

}); 

或者您也可以取消取消小數位的操作。

// el.value = origval; 
// alert("Decimals are not allowed in this field."); 
el.value = el.value.replace(/\./g,""); 
+0

我沒有這個價值的控制,它作爲$ 78.00進入購物車..我只是想限制一旦它的小車進入購物車... – Scorpio

+0

@Scorpio我通過在綁定後添加if語句來解決這個問題。 if語句刪除現有的小數,然後keydown阻止它回來。 –

0

爲什麼不能解析給定值整?

var newValue = parseInt(floatValue, 10); 

然後允許用戶插入點「。」。並在.blur() - 事件,你可以解析浮點數到整數...

$("#Amt").blur(function() { 
    $this.val(parseInt(jQuery(this).val(), 10)); 
});