【问题标题】:How can I tell between a blank textbox and a textbox with zero in it in JavaScript?如何在 JavaScript 中区分空白文本框和零文本框?
【发布时间】:2011-06-21 09:07:27
【问题描述】:

我有以下几点:

var NewCount = document.getElementById('MainContent_gv_NewCount_' + rowIndex).value;
if (NewCount != "") {
    document.getElementById('MainContent_gv_lblTotal_' + rowIndex).innerHTML = "£" + ((originalCount - NewCount) * unitCost).toFixed(2);
} else { 
   document.getElementById('MainContent_gv_lblTotal_' + rowIndex).innerHTML = "";
            }

我所做的计算是基于文本框中的值。 (新计数)。

如果值是任何数字(包括 0),我希望标签更新,但如果用户清除文本框,标签将被擦除。但是,目前它正在处理一个空白文本框和一个包含 0 的文本框。

如何区分两者?

【问题讨论】:

  • 我不相信您发布的代码可能会对您认为出错的事情负责。当输入框的值为任何非空字符串(包括字符串“0”)时,您得到的比较 NewCount != "" 将是 true
  • 您是否希望将空白视为与“”相同?
  • @Pointy - 这不是!= 的工作方式。你需要!==

标签: javascript null nan zero


【解决方案1】:
if ( NewCount.length == 0 ) {
    // text-box is empty
} else if ( !isNaN(NewCount) ) {
    // the value is a number
}

【讨论】:

    【解决方案2】:

    我无法重现您所描述的行为。在我的测试中,带有“0”的文本框将被 Javascript 使用您的比较逻辑 (!= "") 视为 not 空白。

    这是我的尝试: http://jsfiddle.net/pJgyu/5404/

    【讨论】:

      【解决方案3】:

      以下任何一项都可以工作

      NewCount.length > 0
      NewCount !== ''
      

      【讨论】:

        【解决方案4】:

        在您的 if 语句中使用 !==

        【讨论】:

        猜你喜欢
        • 2011-09-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-07-10
        • 2021-08-16
        相关资源
        最近更新 更多