Jquery 在输入字段中指定和显示新值

Jquery 在输入字段中指定和显示新值,jquery,Jquery,由于某种原因,我的功能不起作用。也许我犯了一些语法错误。 函数假定从两个不同的select标记中获取值,并在输入标记中显示它们的和。问题是没有一个标记有id,只有名称。名称也会根据页面动态更改。测试表明,值被正确捕获。如果您发现函数的编写方式有任何问题,请提出建议 <script type="text/javascript"> var productName = document.MainForm.elements["ProductCode"].value; var selectR

由于某种原因,我的功能不起作用。也许我犯了一些语法错误。 函数假定从两个不同的select标记中获取值,并在输入标记中显示它们的和。问题是没有一个标记有id,只有名称。名称也会根据页面动态更改。测试表明,值被正确捕获。如果您发现函数的编写方式有任何问题,请提出建议

<script type="text/javascript">

var productName = document.MainForm.elements["ProductCode"].value;
var selectRightName = "SELECT___" + productName + "___23";
var selectLeftName = "SELECT___" + productName + "___24";
var formQty = "QTY." + productName;

var Quantity1 = document.MainForm.elements[selectRightName].value;
var Quantity2 = document.MainForm.elements[selectLeftName].value;

if (Quantity1 == 75)
    Quantity1 = 1
else if (Quantity1 == 196)
    Quantity1 = 2
else if (Quantity1 == 197)
    Quantity1 = 3
else if (Quantity1 == 198)
    Quantity1 = 4
else if (Quantity1 == 199)
    Quantity1 = 5

if (Quantity2 == 76)
    Quantity2 = 1
else if (Quantity2 == 200)
    Quantity2 = 2
else if (Quantity2 == 201)
    Quantity2 = 3
else if (Quantity2 == 202)
    Quantity2 = 4
else if (Quantity2 == 203)
    Quantity2 = 5

var QtyUpdated = Quantity1 + Quantity2;

var Qty = document.MainForm.elements[formQty].value;



$(document).ready(function()
     $('input[name=selectRightName]').change( function() {

    MainForm.elements[formQty].value = QtyUpdated;
    $('input[name=formQty]').html(QtyUpdated);
 }

  }); 

})

</script>

您的JS存在一些问题:

实际上,您还没有定义一个函数——您的脚本在页面加载时立即执行一次

添加值时,应使用parseInt将从文本框中获取的字符串转换为可以添加的整数:

var QtyUpdated = parseInt(Quantity1, 10) + parseInt(Quantity2, 10);
$'input[name=formQty]'。HTMLQTYUpdate;似乎不正确-formQty,该变量根据产品名称为其分配了一个值。这个jQuery选择器查找一个名为formQty的元素,它看起来不像您希望它做的那样

你错过了分号;在所有if-else块中——虽然是可选的,但我建议不要依赖JavaScript引擎插入。这可能导致难以追踪的问题

因为已经包含了jQuery,所以可以使用更多的jQuery,这样在文本框中获取和设置值时就更容易了

更新

您尚未显示HTML,因此这可能不是现有JS的替代品,但这里有一些代码修复了一些问题:

var productName = $('input[name=ProductCode]').val();
var selectRightName = "SELECT___" + productName + "___23";
var selectLeftName = "SELECT___" + productName + "___24";
var formQty = "QTY." + productName;

function updateValues(){
    var Quantity1 = $('select[name=' + selectRightName + ']').val();
    var Quantity2 = $('select[name=' + selectLeftName + ']').val();

    if (Quantity1 == 75){
        Quantity1 = 1;
    }
    else if (Quantity1 == 196){
        Quantity1 = 2;
    }
    else if (Quantity1 == 197)
        Quantity1 = 3;
    }
    else if (Quantity1 == 198){
        Quantity1 = 4;
    }
    else if (Quantity1 == 199){
        Quantity1 = 5;
    }

    if (Quantity2 == 76){
        Quantity2 = 1;
    }
    else if (Quantity2 == 200){
        Quantity2 = 2;
    }
    else if (Quantity2 == 201){
        Quantity2 = 3;
    }
    else if (Quantity2 == 202){
        Quantity2 = 4;
    }
    else if (Quantity2 == 203){
        Quantity2 = 5;
    }

    var QtyUpdated = parseInt(Quantity1,10) + parseInt(Quantity2,10);

    $('input[name=' + formQty + ']').val(QtyUpdated);
}

$(document).ready(function(){
    $('select[name=' + selectRightName + ']').change( function() {
        updateValues();
    });
});

除了已经说明的问题外,结尾部分还有一些语法问题:

$(document).ready(function(){
    $('input[name=selectRightName]').change( function() {

        MainForm.elements[formQty].value = QtyUpdated;
        $('input[name=formQty]').html(QtyUpdated);


  }); 

})

谢谢你的观点。一切都有道理。On 3>FormQuantity是一个输入名称,每个页面都不同,就像select也不同一样。我按照你的建议修改了脚本,但仍然不起作用。我不知道如何纠正你的第一点。函数必须在每个select更改上执行,左右。@Alexica是的,但您看,您没有函数。要创建命名函数,必须使用语法函数myFunction{//function body}并将其作为myFunction调用-您没有这样做。请查看我的更新答案,以及可能会有所帮助的示例代码。因此,为了使函数在每次选择更改时执行,我需要从语句中删除$document.readyfunction{}?您的花括号放错了位置,您在函数后缺少一个,并且在底部有一个额外的。是的,这是一个很好的捕获。非常感谢。但是我仍然需要$document.readyfunction{…}在每次选择更改时执行该函数?$document.readyfunction{…}用于在DOM完全加载后执行代码。请参见jquery页面