如何使用带有js和jquery的val()获取输入值

时间:2015-05-24 10:59:31

标签: javascript jquery dom

我一直试图获取表中4个输入的值,并使用for循环得到输入数字的总和,但我一直得到0(我定义的总和)

调试了一切,我很确定问题出在" var x" - 它只是从输入中获得了任何信息。



import scala.collection.mutable
import org.apache.spark.mllib.clustering.LDA
import org.apache.spark.mllib.linalg.{Vector, Vectors}
import org.apache.spark.rdd.RDD

object Simple {
  def main(args: Array[String]) {

$(function () {

	$("#inventoryForm").submit(function (event) {
		var table = $("table")
        var error = false;
		event.preventDefault();
          $(".inventoryInput").each(function(){
            if($(this).val() < 0) {

                error = true; //Indicate there was an error
                $("#inventoryError").slideDown().text("Positive numbers only");
                return false; //This stops the iteration
            }

        });

        //Stop processing if there was an error
        if (error) return;
        if (!error) {
        	 $("#inventoryError").hide();	
        }
		$("#inventorySubmit").hide();
		$("#inventoryChange").show();
		$("#withdraw").show();
		$(".inventoryInput").attr('disabled','disabled');
		var sum = 0;
		  var money = table.find("td:nth-child(2)");
		for (var i = 0; i<money.length; i++) {
		 	var x = money.eq(i).val();
			sum += x;
			$("#totalMoney").text(sum);
		}
		console.log(money);
		
	});

	$("#inventoryChange").click(function () {
		$("#inventorySubmit").show();
		$("#inventoryChange").hide();
		$("#withdraw").hide();
		$(".inventoryInput").removeAttr('disabled');
	});


});
&#13;
.hidden {
	display: none;
}
.error {
    display: none;
    color: red;
    border: dotted 3px yellow;
    padding: 10px;
}
&#13;
&#13;
&#13;

1 个答案:

答案 0 :(得分:2)

问题确实存在于

var x = money.eq(i).val();

moneytds的数组。所以money.eq(i)是一个td。你想要的是实际的input。所以解决方案是

var x = money.eq(i).find('input').val();

详细说明你的进一步表扬。如果您使用

填写所有4个输入
var x = parseInt(money.eq(i).find('input').val());

它会按预期加总。当其中一个输入为空时它会抛出NaN因为parseInt('')返回NaN,所以你应该检查输入是否实际有值..

var input = money.eq(i).find('input').val();
var x = input ? parseInt(input) : 0

进一步解释我的代码。

var input = money.eq(i).find('input').val();

这将获得实际输入的值,无论该值是什么。

var x = input ? parseInt(input) : 0

检查输入的值是否为空。如果为空,则为x=0,否则为x=parseInt(input)。因此,如果输入不为空,则将该值解析为int并分配给x

sum += x

x被添加到最终总和中。