এমভিসি 4 রেজারে কেবলমাত্র পাঠ্যবক্সে কীভাবে সংখ্যার অনুমতি দেওয়া যায়


84

আমার কাছে 3 টি পাঠ্য বাক্স রয়েছে যা ডাক কোড এবং মোবাইল নম্বর এবং আবাসিক নম্বর দেয় values আমি বেলো পোস্ট থেকে jquery ব্যবহার করে কেবল পাঠ্য বাক্সে নম্বর দেওয়ার অনুমতি পেয়েছি।

আমি সম্পাদনার জন্য পাঠ্যবক্সটি কেবল সংখ্যা গ্রহণ করতে চাই

আমি এমভিসি 4 রেজার ব্যবহার করার সাথে সাথে আমরা ডেটা টীকাগুলি ব্যবহার করে এটি করতে পারি?


4
আপনি এটি করতে পারবেন না কারণ আপনি যখন ফর্মটি জমা দেন তখন ডেটা টীকাগুলি বলা হয়, যখন আপনি আপনার পাঠ্যবাক্সগুলিতে ডেটা প্রবেশ করেন না
কার্তিক

যদিও এটি সত্য, আপনি HTML5 ইনপুট ধরণের বৈধতা বিধি (যেখানে ব্রাউজার দ্বারা সমর্থিত) ব্যবহার করতে পারেন। এই প্রশ্নে কাজ করে।
হাবসন ব্রোপা

সিএসএস শ্রেণীর সাথে jQuery ব্যবহার করুন


@ কার্তিকচিন্তালা এটি ভুল। ফর্ম রেন্ডার করার সময় বিভিন্ন ক্ষেত্রের ক্লায়েন্ট সাইড jQuery বৈধতা এবং ইনপুট প্রকার নির্ধারণের জন্য ডেটা টীকাগুলিও ব্যবহৃত হয়।
প্রোফেক

উত্তর:


102

আমি কেবল এইচটিএমএল 5 ইনপুট টাইপ = সংখ্যা নিয়ে খেলছিলাম। যদিও এটি সমস্ত ব্রাউজার দ্বারা সমর্থিত নয় আমি আশা করি এটি হ'ল ধরণের নির্দিষ্ট হ্যান্ডলিং (প্রাক্তন সংখ্যা) হ্যান্ডেল করার পথে এগিয়ে যাওয়া forward রেজারের সাথে করা খুব সহজ (প্রাক্তন ভিবি)

@Html.TextBoxFor(Function(model) model.Port, New With {.type = "number"})

এবং লি রিচার্ডসনকে ধন্যবাদ, সি # উপায়

@Html.TextBoxFor(i => i.Port, new { @type = "number" }) 

প্রশ্নের ক্ষেত্রের বাইরে কিন্তু আপনি কোনও এইচটিএমএল 5 ইনপুট ধরণের জন্য একই পন্থাটি করতে পারেন


9
ওরফে @ এইচটিএমএল.টেক্সটবক্সফোর্ফ (i => আই.পোর্ট, নতুন {@type = "সংখ্যা"})
লি রিচার্ডসন

4
আপনি "-" এবং "+" এমন ইনপুটও করতে পারেন যা সংখ্যার নয় characters
মিঃ ব্লন্ড

অপেরা মিনি বাদে এটি অন্ততপক্ষে সমস্ত প্রধান ব্রাউজারগুলিতে সমর্থিত supported
টোবিয়াস জে

"-" এবং "+" অক্ষর ছাড়াও আপনি "ই" অক্ষর ইনপুট করতে পারেন। আমি তার উত্তরে ডোনাল লাফার্টি দ্বারা নির্দেশিত হিসাবে ডেটা টীকা + রেজেক্স ব্যবহার করেছি used
আলেজান্দ্রো জুলেটা

61

একটি নিয়মিত এক্সপ্রেশন ব্যবহার করুন, যেমন

[RegularExpression("([1-9][0-9]*)", ErrorMessage = "Count must be a natural number")]
public int Count { get; set; }

4
এই উত্তর হওয়া উচিত।

53
@Html.TextBoxFor(m => m.PositiveNumber, 
                      new { @type = "number", @class = "span4", @min = "0" })

রেজারের সাথে এমভিসি 5-তে আপনি ইনপুট ক্ষেত্রে কেবল ধনাত্মক সংখ্যার অনুমতি দিতে উপরের উদাহরণ অনুসারে বেনামে অবজেক্টে যে কোনও এইচটিএমএল ইনপুট বৈশিষ্ট্য যুক্ত করতে পারেন।


ফ্রন্ট এন্ড বৈধকরণের জন্য সুন্দর ঝরঝরে সমাধান। আমার সময় বাঁচানোর জন্য ধন্যবাদ @ রিআলাওয়ালোরো :-)
আসিফ মেহমুদ

স্প্যান 4-ক্লাসটি কোথা থেকে আসে?
mischka

এটি কোনও পাঠ্য বাক্সের জন্য কোনও সিএসএস শ্রেণি নির্দিষ্ট করতে কীভাবে এটি একটি নমুনা।
ডায়গোসাসw

15

পাঠ্যবক্সে এই কোডটি লিখুন onkeypress="return isNumberKey(event)" এবং এর জন্য ফাংশন ঠিক নীচে।

<script type="text/javascript">
function isNumberKey(evt)
{
          var charCode = (evt.which) ? evt.which : event.keyCode;
          if (charCode != 46 && charCode > 31 
            && (charCode < 48 || charCode > 57))
             return false;

          return true;
}
</script>

জাভাস্ক্রিপ্ট ইভেন্টটি ফায়ারফক্স সংজ্ঞায়িত করা হয়নি

কীপ্রেস ইভেন্টটি সমস্ত মোবাইলে উপলব্ধ না থাকায় এটি প্রচুর স্মার্টফোনে কাজ করবে না।
রেপো

এটি এমভিসি 4 রেজারের জন্য উত্তর দেওয়া হয়েছিল
শ্বেত

9

দয়া করে ডেটা টাইপ বৈশিষ্ট্যটি ব্যবহার করুন তবে এটি নেতিবাচক মানগুলি বাদ দিলে নীচের নিয়মিত প্রকাশটি এড়াতে পারে

   [DataType(DataType.PhoneNumber,ErrorMessage="Not a number")]
   [Display(Name = "Oxygen")]
   [RegularExpression( @"^\d+$")]
   [Required(ErrorMessage="{0} is required")]
   [Range(0,30,ErrorMessage="Please use values between 0 to 30")]
    public int Oxygen { get; set; }

8

এটি আমার পক্ষে কাজ করেছে:

<input type="text" class="numericOnly" placeholder="Search" id="txtSearch">

জাভাক্রিপ্ট:

//Allow users to enter numbers only
$(".numericOnly").bind('keypress', function (e) {
    if (e.keyCode == '9' || e.keyCode == '16') {
        return;
    }
    var code;
    if (e.keyCode) code = e.keyCode;
    else if (e.which) code = e.which;
    if (e.which == 46)
        return false;
    if (code == 8 || code == 46)
        return true;
    if (code < 48 || code > 57)
        return false;
});

//Disable paste
$(".numericOnly").bind("paste", function (e) {
    e.preventDefault();
});

$(".numericOnly").bind('mouseenter', function (e) {
    var val = $(this).val();
    if (val != '0') {
        val = val.replace(/[^0-9]+/g, "")
        $(this).val(val);
    }
});

কীপ্রেস ইভেন্টটি সমস্ত মোবাইলে উপলব্ধ না থাকায় এটি প্রচুর স্মার্টফোনে কাজ করবে না।
রেপো

5

আপনার স্ক্রিপ্টে এই ফাংশনটি ব্যবহার করুন এবং ত্রুটি বার্তাটি দেখানোর জন্য পাঠ্যবক্সের কাছে একটি স্প্যান দিন

$(document).ready(function () {
    $(".digit").keypress(function (e) {
        if (e.which != 8 && e.which != 0 && (e.which < 48 || e.which > 57)) {
            $("#errormsg").html("Digits Only").show().fadeOut("slow");
            return false;
        }
    });
});

@Html.TextBoxFor(x => x.company.ContactNumber, new { @class = "digit" })
<span id="errormsg"></span>

সরল সমাধানের জন্য
উত্সাহিত করা হয়েছে

কীপ্রেস ইভেন্টটি সমস্ত মোবাইলে উপলব্ধ না থাকায় এটি প্রচুর স্মার্টফোনে কাজ করবে না।
রেপো

3

can we do this using data annotations as I am using MVC4 razor ?

না, আমি যেমন আপনার প্রশ্নটি বুঝতে পেরেছি, আপত্তিজনক বৈধতা কেবলমাত্র ইরটার দেখিয়ে দেবে। সহজ উপায় হ'ল jquery প্লাগইন ব্যবহার:

মুখোশযুক্ত ইনপুট প্লাগইন


2

এখানে জাভাস্ক্রিপ্ট যা আপনাকে কেবল সংখ্যা প্রবেশ করতে দেয়।

onkeypressপাঠ্যবক্সের জন্য ইভেন্টে সাবস্ক্রাইব করুন ।

@Html.TextBoxFor(m=>m.Phone,new { @onkeypress="OnlyNumeric(this);"})

এটির জন্য জাভাস্ক্রিপ্ট এখানে দেওয়া হল:

<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;
                }
            }
        }
</script>

আশা করি এটি আপনাকে সহায়তা করবে।


সমস্ত কোড পাথ কোনও মান দেয় না এবং এটি আমার পক্ষে কার্যকর হয় না

কীপ্রেস ইভেন্টটি সমস্ত মোবাইলে উপলব্ধ না থাকায় এটি প্রচুর স্মার্টফোনে কাজ করবে না।
রেপো

2

শূন্যের চেয়ে দশমিক মানের চেয়ে বেশি, এইচটিএমএল 5 নীচে কাজ করে:

<input id="txtMyDecimal" min="0" step="any" type="number">

এবং রেজারে এইচটিএমএলহেল্পার দিয়ে আপনি এটি কীভাবে করবেন?
ল্যারিবুড

আমি রেজার ব্যবহার করার চেষ্টা করেছি, কিন্তু যুগে যুগে অনুসন্ধান করার পরেও আমি কোনও পরিষ্কার খুঁজে পেয়েছি না।
ক্রিস জে

1

হতে পারে আপনি [পূর্ণসংখ্যা] ডেটা টীকাটি ব্যবহার করতে পারেন (যদি আপনি ডেটাঅনোটেশন এক্সটেনশনগুলি http://dataannotationsextensions.org/ ব্যবহার করেন )। যাইহোক, এই উইলটি কেবলমাত্র মানটি পূর্ণসংখ্যা কিনা তা পরীক্ষা করে দেখুন, এটি যদি পূরণ করা হয় না তবে (সুতরাং আপনার [প্রয়োজনীয়] বৈশিষ্ট্যটিও প্রয়োজন হতে পারে)।

আপনি যদি অবিচ্ছিন্ন বৈধতা সক্ষম করেন এটি এটি ক্লায়েন্টাইডকে বৈধতা দেবে, তবে আপনার জাভাস্ক্রিপ্ট অক্ষম হওয়ার ক্ষেত্রে আপনার পোস্টের ক্রিয়াকলাপে মডেলস্টেটও ব্যবহার করা উচিত alid


0

DataTypeএকটি দ্বিতীয় কনস্ট্রাক্টর রয়েছে যা স্ট্রিং নেয়। তবে অভ্যন্তরীণভাবে এটি UIHintবৈশিষ্ট্যটি ব্যবহার করার মতোই using

DataTypeগণনাটি .NET কাঠামোর অংশ হওয়ায় একটি নতুন কোর ডাটাটাইপ যুক্ত করা সম্ভব নয় । আপনি যে নিকটতম জিনিসটি করতে পারেন তা হ'ল একটি নতুন বর্গ তৈরি করা যা এর থেকে উত্তরাধিকার সূত্রে প্রাপ্ত DataTypeAttribute। তারপরে আপনি নিজের DataTypeঅঙ্কের সাথে একটি নতুন কনস্ট্রাক্টর যুক্ত করতে পারেন ।

public NewDataTypeAttribute(DataType dataType) : base(dataType)
 { }

public NewDataTypeAttribute(NewDataType newDataType) : base (newDataType.ToString();

আপনি এই লিঙ্কটি দিয়েও যেতে পারেন । তবে আমি আপনাকে একই জন্য Jquery ব্যবহার করার পরামর্শ দেব।


0

হাই নিম্নলিখিত চেষ্টা করুন ....

<div class="editor-field">
  <%: Html.TextBoxFor(m => m.UserName, new {onkeydown="return ValidateNumber(event);" })%>
  <%: Html.ValidationMessageFor(m => m.UserName) %>
</div>

লিপি

<script type="text/javascript">
   function ValidateNumber(e) {
       var evt = (e) ? e : window.event;
       var charCode = (evt.keyCode) ? evt.keyCode : evt.which;
       if (charCode > 31 && (charCode < 48 || charCode > 57)) {
           return false;
       }
       return true;
   };

কীপ্রেস ইভেন্টটি সমস্ত মোবাইলে উপলব্ধ না থাকায় এটি প্রচুর স্মার্টফোনে কাজ করবে না।
রেপো

0
@Html.TextBoxFor(x => x.MobileNo, new { @class = "digit" , @maxlength = "10"})

@section Scripts 
{
    @Scripts.Render("~/bundles/jqueryui")
    @Styles.Render("~/Content/cssjqryUi")

    <script type="text/javascript">
         $(".digit").keypress(function (e) {
            if (e.which != 8 && e.which != 0 && (e.which < 48 || e.which > 57)) 
            {
                $("#errormsg").html("Digits Only").show().fadeOut("slow");
                return false;
            }
         });
    </script>
}

0

<ইনপুট টাইপ = "সংখ্যা" @ বাইন্ড = "পরিমাণ" শ্রেণি = "txt2" />

প্রকার = "সংখ্যা" ব্যবহার করুন


-1
function NumValidate(e) {
    var evt = (e) ? e : window.event;
    var charCode = (evt.keyCode) ? evt.keyCode : evt.which;
    if (charCode > 31 && (charCode < 48 || charCode > 57)) {
        alert('Only Number ');
        return false;
    }    return true;
}  function NumValidateWithDecimal(e) {

var evt = (e) ? e : window.event;
var charCode = (evt.keyCode) ? evt.keyCode : evt.which;

if (!(charCode == 8 || charCode == 46 || charCode == 110 || charCode == 13 || charCode == 9) && (charCode < 48 || charCode > 57)) {
    alert('Only Number With desimal e.g.: 0.0');
    return false;
}
else {
    return true;
} } function onlyAlphabets(e) {
try {
    if (window.event) {
        var charCode = window.event.keyCode;
    }
    else if (e) {
        var charCode = e.which;
    }
    else { return true; }

    if ((charCode > 64 && charCode < 91) || (charCode > 96 && charCode < 123) || (charCode == 46) || (charCode == 32))
        return true;
    else
        alert("Only text And White Space And . Allow");
    return false;

}
catch (err) {
    alert(err.Description);
}} function checkAlphaNumeric(e) {

if (window.event) {
    var charCode = window.event.keyCode;
}
else if (e) {
    var charCode = e.which;
}
else { return true; }

if ((charCode >= 48 && charCode <= 57) || (charCode >= 65 && charCode <= 90) || (charCode == 32) || (charCode >= 97 && charCode <= 122)) {
    return true;
} else {
    alert('Only Text And Number');
    return false;
}}

4
আপনার সমাধানের সামান্য বর্ণনা সম্পর্কে কীভাবে?
জ্যাক ফ্ল্যাম্প

সাধারণত বেনাম কোডের কয়েকটি সারি পোস্ট করার পরিবর্তে কোনও সমাধান ব্যাখ্যা করা ভাল। আপনি কীভাবে আমি একটি ভাল উত্তর লিখতে পারি তা এবং পুরোপুরি কোড ভিত্তিক উত্তরগুলিও ব্যাখ্যা
আনহ ফাম
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.