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