【问题标题】:How to increment/decrement textbox value by one with onClick如何使用 onClick 将文本框值递增/递减一
【发布时间】:2018-01-27 15:01:54
【问题描述】:

首先,请帮我在 JavaScript 中解决这个问题。没有 jQuery 或任何插件。我正在尝试对此进行编码以在 Cordova/PhoneGap 中工作。我在玩 Cordova/PhoneGap 的同时自学 JavaScript,所以请保持温柔。

我有一个两边都有按钮的文本框,右边是文本框值加 1(+),左边是文本框减 1(-)。我的目的是让页面/应用程序首次加载在文本框中显示 0 值。一旦有人按下 + 按钮,文本框应该从 0 增加到 1,并随着每次单击 + 增加 1。如果应用程序关闭并重新打开,它应该记住应用程序关闭前文本框中的最后一个数字。

它在浏览器测试中起作用,它导致 PhoneGap 的 iPhone 应用程序不再识别 PhoneGap 重置应用程序的手势等,按下 +/- 按钮太慢地增加/减少文本框,尽管设置 min= 它可能会变为负数“0”。我究竟做错了什么? (我知道由于沙盒,localStorage 无法在代码 sn-p 中完成,所以如果您希望我放置一个 JSFiddle 或其他东西,请告诉我该怎么做。)

window.onload = function(){
	var CapsNum = localStorage.getItem("CapsNum");

		if(CapsNum == null) {
			CapsNum = "0";
		} else {
			document.getElementById("caps").value = CapsNum;
}}
window.onbeforeunload = function(){
	localStorage.setItem("CapsNum", document.getElementById("caps").value);
}
function PlusCaps(){
	localStorage.setItem("CapsNum",document.getElementById("caps").value++);
}

function MinusCaps(){
	localStorage.setItem("CapsNum",document.getElementById("caps").value--);
}
<input type="button" id="plus" class="button" value="+" style="margin-left:10px" onclick="MinusCaps()" />
<input type="tel" id="caps" maxlength="3" size="3" min="0" max="999" pattern="[0-9]" value="0" />
<input type="button" id="minus" class="button" value="-" style="margin-right:10px" onclick="PlusCaps()" />

【问题讨论】:

    标签: javascript android ios cordova numberpicker


    【解决方案1】:

    因此,您似乎正在更改值并将其保存到本地存储中。这不会更新页面上的值。我通过修改您的示例创建了一个小函数,该函数可以更新本地存储中的状态并同时更新文本框中的值。

    window.onload = function() {
      //var CapsNum = localStorage.getItem("CapsNum");
    
      if (CapsNum == null) {
        CapsNum = "0";
      } else {
        document.getElementById("caps").value = CapsNum;
      }
    }
    window.onbeforeunload = function() {
      localStorage.setItem("CapsNum", document.getElementById("caps").value);
    }
    
    function PlusCaps() {
    	var nextValue = parseInt(document.getElementById("caps").value) + 1;
      setNextValue(nextValue);
    }
    
    function MinusCaps() {
    	var nextValue = parseInt(document.getElementById("caps").value) - 1;
      setNextValue(nextValue);
    }
    
    function setNextValue(nextValue) {
      //localStorage.setItem("CapsNum", nextValue);
      document.getElementById("caps").value = nextValue;
    }
    <input type="button" id="plus" class="button" value="+" style="margin-left:10px" onclick="PlusCaps()" />
    <input type="tel" id="caps" maxlength="3" size="3" min="0" max="999" pattern="[0-9]" value="0" />
    <input type="button" id="minus" class="button" value="-" style="margin-right:10px" onclick="MinusCaps()" />

    【讨论】:

    • 感谢您的帮助。我将您的代码加载到我的代码中并打开 Chrome 的开发人员工具,然后单击加号按钮并收到此错误:'Uncaught ReferenceError: PlusCaps is not defined at HTMLInputElement.onclick (index.html:52)' 我做错了什么?
    • 我想您可能错过了复制 PlusCaps 函数。如果您通过单击 Run code sn -p 运行代码,它会运行吗?
    • 就是这样。我确保代码在那里。您的 sn-p 在我使用计算机时运行并尝试过。 (我现在正在使用 SO phone 应用程序。)
    • 好的。我真笨。我离开了一个结束},这一切都搞砸了。我解决了这个问题,现在它什么也没做。只是为了测试,我把你的代码放在一个 JSfiddle 中,看看会发生什么并得到相同的结果。我究竟做错了什么? jsfiddle.net/HidetoK/2ktbanay
    • 所以 JSfiddle 中的 JavaScript 没有将文本框的值计算为字符串。在这个小提琴中,我解决了这个问题。我也会更新这篇文章以反映。 jsfiddle.net/ugx6995h
    猜你喜欢
    • 2020-05-10
    • 2012-08-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-17
    • 2020-12-31
    • 1970-01-01
    相关资源
    最近更新 更多