如果condition为true,则Jquery从2个输入字段中获取值,将值相乘并在第三个输入字段中插入结果

时间:2013-09-02 05:55:43

标签: jquery

基于此http://api.jquery.com/val/尝试创建代码(从2个输入字段获取值,在第三个输入字段中相乘并插入结果)。

此处放置样本http://jsfiddle.net/KWEyG/1/

<td><input type="text" name="result[]" id='result' value="77"></td>

<td><input type="text" name="firstVal[]" id='firstVal' value="first"></td>

<td><input type="text" name="secondVal[]" id='secondVal' value="second"></td>

然后jquery

function displayVals() {
    var firstValue = $("#firstVal").val();
    var secondValue = $("#secondVal").val();

    $("#result").val(firstValue*secondValue);
}
$("input").change(displayVals);
displayVals();

result的默认值为77。但是使用代码默认值,请参阅NaN

添加了if ( ($("#firstVal").val() > 0) && ($("#secondVal").val() != '') ) {。默认值没问题,但没有计算。

需要更正才能使脚本正常工作?

更新

根据建议获得必要的

function displayVals() {

    if ( ($("#firstVal").val() > 0) && ($("#secondVal").val() != '') ) {

        var firstValue = $("#firstVal").val();
        var secondValue = $("#secondVal").val();

        $("#result").val(firstValue*secondValue);
    }
$("input").change(displayVals);
}

displayVals();

3 个答案:

答案 0 :(得分:1)

查看您的代码: 您将StringString相乘,这是一个明显的结果NaN

要理解的第二件事是在算术计算之前使用parseIntparseFloat,然后通过isNaN方法检查。

$("#firstVal").val();会在元素value中生成<input>的属性值,此处为firstString)。

使用alert进行检查:

function displayVals() {
var firstValue = $("#firstVal").val();
var secondValue = $("#secondVal").val();
alert(firstValue+' '+secondValue+(firstValue*secondValue));
}

但是,当您将这两个值都更改为number时,它应该可以正常工作,因为value将是一个数字。

答案 1 :(得分:0)

你是乘以字符串而不是使用如下的整数值:

<td><input type="text" name="result[]" id='result' value="77"></td>

<td><input type="text" name="firstVal[]" id='firstVal' value=""></td>

<td><input type="text" name="secondVal[]" id='secondVal' value=""></td>

编辑:

 $("#check").click(function(){
if ( ($("#firstVal").val() > 0) && ($("#secondVal").val() != '') ) {
displayVals();
}else{
alert("insert a value");
}

})

工作Fiddle

答案 2 :(得分:0)

NaN已插入#result,因为您在代码段末尾调用了displayVals();。该函数现在尝试将firstsecond相乘,这当然会返回NaN,因为您无法乘以字符串。