将1逐步添加到带有数字

时间:2017-10-27 22:44:32

标签: javascript jquery

$("#next").click(function() {
  var text = $("#textbox").val();
  var Numbers = text.substring(4, 8); //To get the 4 numbers
  var Num = parseInt(Numbers, 10); //To convert to an integer?
  var Add = +(Num).val() + 1; //Increment 1?
  $("#textbox").val(Add); //Output final value
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="button" id="next" value="Increment" />
<br/>
<input type="text" id="textbox" value="ABC-123" />

我有一个带有“ABC-1234”字符串的文本框作为值和一个按钮。每次单击按钮时,我都会尝试将1添加到文本框中输入的内容。我对编程很新,但这就是我想出来的,结果是NaN的结果。

2 个答案:

答案 0 :(得分:3)

您要解决的问题是在混合的字母然后数字文本字符串的数字部分添加一个。

假设您的文字将包含 alpha部分,那么文字破折号 -,最后是数字部分,它使用String.split()方法很容易提取数字部分。

var text = $("#textbox").val();
var parts = text.split('-');

现在,零件[0]是仪表板左侧的所有零件,零件[1]是右侧的所有零件。只需将其解析为数字,添加一个,然后将其与文本的其余部分一起添加回来,将其放回到字段中。

$("#next").click(function() {
  var text = $("#textbox").val();
  var parts = text.split('-');     // Get the numbers in parts[1]
  var num = parseInt(parts[1], 10); // Convert to an integer
  num++; //Increment 1?
  $("#textbox").val(parts[0] + '-' + num); //Output final value
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="button" id="next" value="Increment" />
<br/>
<input type="text" id="textbox" value="ABC-123" />

这比text.substring(4, 8);更灵活,因为它可以使用任何长度的字符串和任何长度的数字,只要它们之间有短划线。

答案 1 :(得分:1)

您的代码几乎是正确的,但您必须更改一些内容才能使其“正确”:

  1. 依赖于javascript的命名约定,将变量写入lower(Camel)Case。

  2. parseInt返回一个基本类型的数字。需要调用val()方法!没有这样的功能。只需使用变量本身

  3. 你必须在你开头的字母前加上增加的数字。

  4. 总而言之:

    $("#next").click(function(){
        var text = $("#textbox").val();
        var numbers = text.substring(4); //To get all the numbers
        var num = parseInt(numbers, 10); //To convert to an integer?
        num = num + 1; //Increment 1?
        $("#textbox").val(text.substring(0,4)+num); //Output final value
    });