الحصول على قيمة عدد صحيح من مربع نص، وكيفية التحقق مما إذا كانت نان أو NULL إلخ؟

StackOverflow https://stackoverflow.com/questions/793445

  •  16-09-2019
  •  | 
  •  

سؤال

أنا أسحب قيمة عبر JavaScript من مربع نص. إذا كان مربع النص فارغا، إلا أنه يعود NaN. وبعد أريد إرجاع سلسلة فارغة إذا كانت فارغة، فارغة، إلخ.

ما التحقق الذي أفعله؟ if(NAN = tb.value)?

هل كانت مفيدة؟

المحلول

جلالة الملك، شيء هو مريب هنا.

في أي متصفح يقوم مربع نص فارغ بإرجاع نان؟ لم أر ذلك يحدث أبدا، ولا يمكنني إعادة إنتاجه.

قيمة مربع النص هو، في الواقع سلسلة. مربع نص فارغ يرجع سلسلة فارغة!

أوه، والتحقق مما إذا كان هناك شيء نان، يجب عليك استخدام:

if (isNaN(tb.value))
{
   ...
}

لاحظ ال isNaN()-Frunction العودة true لأي شيء لا يمكن تحليله كرقم، باستثناء سلاسل فارغة. هذا يعني أنه تحقق جيد للإدخال الرقمي (أسهل بكثير من Regexes):

if (tb.value != "" && !isNaN(tb.value))
{
   // It's a number
   numValue = parseFloat(tb.value);
}

نصائح أخرى

يمكنك أيضا القيام بذلك بهذه الطريقة:

var number = +input.value;
if (input.value === "" || number != number)
{
    // not a number
}

نان يساوي شيئا، وليس حتى في حد ذاته.

إذا كنت لا تحب استخدام + للتحويل من سلسلة إلى الرقم، استخدم المعالجة الطبيعية، ولكن تذكر أن تعطي قاعدة دائما

var number = parseInt(input.value, 10)

خلاف ذلك يصبح "08" 0 لأن جافا سكريبت تعتقد أنه رقم ثماني.

على افتراض أن لديك إشارة إلى مربع نص الإدخال:

function getInteger(input) {
  if(!input || !input.value) return "";

  var val = parseInt(input.value, 10);

  if(isNaN(val)) return "";
  else return val;
}

شيء واحد يمكنك القيام به هو فحص Regex من قيمة TextBox وتأكد من أن تناسب تنسيق رقم مقبول، ثم إذا كان يناسب التنسيق، فقم بإرجاع سلسلة فارغة.

يحرر: هذا مثال من بعض الكود لدي أمامي (قد لا يكون أفضل تعبير منتظم):

var anum=/(^\d+$)/;

if (!anum.test(document.getElementById("<%=txtConceptOrderValue.ClientID %>").value))
{
    alert("Order Value must be a valid integer");
    document.getElementById("<%=txtConceptOrderValue.ClientID %>").focus();
    return false;
}

تحرير 2.: يجب أن ألاحظ أيضا أنني أستخدم ASP.NET وهذا هو السبب في أن لدي طريقة غير تقليدية قليلا للوصول إلى مربع النص. في حالة JavaScript العادية الخاصة بك قد لا تكون كما تشوش.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top