如何在MVC视图中仅将数字分配给文本框

时间:2013-12-24 13:52:32

标签: javascript jquery asp.net-mvc

我放了一个文本框,我只想要数字。我想在客户端验证它并编写以下代码

@using (Html.BeginForm("LoyaltyPoints","Cart",FormMethod.Post))
{
<label>Enter point:</label>
<br />
@Html.TextBoxFor(m => m.txtLoyaltyPoints, new { @onkeypress = "OnlyNumeric(this)" })
<br />
<input type="submit" value="Submit" />
<br />
@ViewBag.LoyaltyPointsErrorMessage
}

@Scripts.Render("~/bundles/jquery")
<script type="text/javascript">
function OnlyNumeric(e) {
    if ((e.which < 48 || e.which > 57)) {
        if (e.which == 8 || e.which == 46 || e.which == 0) {
            return true;
        }
        else {
            return false;
        }
    }
}

现在我的javascript没有解雇。我试着在这里保持警觉,但没有按预期工作。可能是什么错误。请帮忙。

5 个答案:

答案 0 :(得分:2)

使用以下代码:

@Html.TextBoxFor(m => m.txtLoyaltyPoints, new {@id ="txtLoyalty" })`


<script type="text/javascript">
$(document).ready(function () {
    $("#txtLoyalty").keydown(function (event) {
        if (event.shiftKey) {
            event.preventDefault();
        }
        if (event.keyCode == 46 || event.keyCode == 8) {
        }
        else {
            if (event.keyCode < 95) {
                if (event.keyCode < 48 || event.keyCode > 57) {
                    event.preventDefault();
                }
            }
            else {
                if (event.keyCode < 96 || event.keyCode > 105) {
                    event.preventDefault();
                }
            }
        }
    });
});

答案 1 :(得分:2)

@Html.TextBoxFor(m => m.Height, new { @type = "number", @onkeypress = "ValidateNumber(event);" })

function ValidateNumber(event) {

var theEvent = event || window.event;
var key = theEvent.keyCode || theEvent.which;
key = String.fromCharCode(key);
var regex = /[0-9]|\./;

if (!regex.test(key)) {
    theEvent.preventDefault ? theEvent.preventDefault() : (theEvent.returnValue = false); 
}

答案 2 :(得分:1)

您可以使用onblur替换onkeypress

@Html.TextBoxFor(m => m.txtLoyaltyPoints, new { @onblur = "OnlyNumeric(this)" })

答案 3 :(得分:1)

<td class="field_nameW">

$@Html.TextBox("PayFromBankId3_Amount", 0.00M, new { @class = "amount_field", @onblur = "FormatAmountDecimal(this,3);", @size = "7", title = "Amount", @maxlength = "11" })

<script>

 $('#Id').numeric({ allow: "." });

 </script>

答案 4 :(得分:0)

@Html.TextBoxFor(m => m.txtLoyaltyPoints, new { @onkeypress = "return onlyNos(event,this);" })


<script>
  function onlyNos(e, t) {<br/>

        if (window.event) {<br/>
            var charCode = window.event.keyCode;<br/>
        }<br/>
        else if (e) {<br/>
            var charCode = e.which;<br/>
        }<br/>
        else { return true; }<br/>
        if (charCode > 31 && (charCode < 48 || charCode > 57)) {<br/>
            alert("Please Enter only Numbers");<br/>
            return false;<br/>
        }<br/>
        return true;<br/>
    }
</script>