0

I have this view

I would like the field only accepts integer numbers when entering a value

View

<div class="RDANumber"></div>
  @Html.EditorFor(i => i.NumRDA)
<div class="clear"></div>

I try with js code bellow but no have a success.

Where am I going wrong?

What better way to do this?

JS

<script type="text/javascript">
$(document).ready(function () {
    $("#RDANumber").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();
                }
            }
        }
    });
});
O Aprendiz
  • 55
  • 3
  • 13
  • `RDANumber` is a class on the div and you are referencing `#RDANumber` as an id. Did you mean to have it as `$(".RDANumber")` or did you mean to reference the input by id `$("#NumRDA")`? – stephen.vakil Dec 28 '15 at 16:51
  • Possible duplicate of [Validate that a string is a positive integer](http://stackoverflow.com/questions/10834796/validate-that-a-string-is-a-positive-integer) – Shawn Mehan Dec 28 '15 at 16:56

3 Answers3

0

You don't need to write some javascript code because it's already built-in in ASP.Net MVC framework :

  1. Check that you have client validation enabled and unobtrusive javaScript enabled in your web.config :
<appSettings>
  <add key="ClientValidationEnabled" value="true" />
  <add key="UnobtrusiveJavaScriptEnabled" value="true" />
</appSettings>
  1. Check that you reference correctly client side validation Javascript files in your Razor view : jQuery, jQuery Validate and jquery.validate.unobtrusive.js.
  2. Insert a validation attribute beside your NumRDA property in .cs file :
[Range(0, int.MaxValue, ErrorMessage = "Please enter valid integer Number")]
Guillaume
  • 844
  • 7
  • 25
0

you can choose other way

1-use a jquery plugin click here

2-only numeric (0-9) in HTML inputbox using jQuery

Community
  • 1
  • 1
0

when you use

@Html.EditorFor(i => i.NumRDA)

it generates

<input type="text" name="NumRDA" />

for you

then you can use below code to prevent users to input non-digit characters

$(document).ready(function () {
$( "input[name='NumRDA']" ).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();
            }
        }
    }
});
});

And here is the jsfiddle example

Amir Mahmoodi
  • 100
  • 1
  • 10