虽然这是一个在Breezingforms中为Joomla创建的表单,但我的问题更像是一个通用的javascript问题。我对javascript非常陌生,所以希望有人能很容易地回答这个问题。这是在表单初始化时调用的。
我在一个选择列表对象中使用javascript循环来隐藏/取消隐藏表单的各个部分,这取决于选择列表的选择。我正在努力使if/else if语句不那么笨拙。我相信有一种方法可以让这篇文章变得更简短、更简洁,但作为一个新手,我还没能弄明白。
顺便说一句(目前并不重要,但它会变得重要),我想将此脚本用于其他选择列表调用,但有一些小的变化。我仍然不太清楚代码的重用。如果有人对此有任何意见,我们将不胜感激。
顺便说一句,我是jQuery的新手,所以如果你去那里,请多关照!:)
var selListVal = "";
var selListInput = JQuery("[name=\"mySelectionList[]\"]");
for (var i = 0; i < selListInput.length; i++)
if (selListInput[i].value) {
if (selListVal != "") selListVal += ",";
selListVal += selListInput[i].value;
}
if( selListVal == "myselection01" ){
ToggleFields('on', 'section', 'mysection01A', DeactivateField);
ToggleFields('on', 'section', 'mysection01B', DeactivateField);
}
else if( selListVal == "myselection02" ){
ToggleFields('on', 'section', 'mysection01A', DeactivateField);
ToggleFields('on', 'section', 'mysection01B', DeactivateField);
ToggleFields('on', 'section', 'mysection02A', DeactivateField);
ToggleFields('on', 'section', 'mysection02B', DeactivateField);
}
else if( selListVal == "myselection03" ){
ToggleFields('on', 'section', 'mysection01A', DeactivateField);
ToggleFields('on', 'section', 'mysection01B', DeactivateField);
ToggleFields('on', 'section', 'mysection02A', DeactivateField);
ToggleFields('on', 'section', 'mysection02B', DeactivateField);
ToggleFields('on', 'section', 'mysection03A', DeactivateField);
ToggleFields('on', 'section', 'mysection03B', DeactivateField);
}
else {
ToggleFields('off', 'section', 'mysection01A', DeactivateField);
ToggleFields('off', 'section', 'mysection01B', DeactivateField);
ToggleFields('off', 'section', 'mysection02A', DeactivateField);
ToggleFields('off', 'section', 'mysection02B', DeactivateField);
ToggleFields('off', 'section', 'mysection03A', DeactivateField);
ToggleFields('off', 'section', 'mysection03B', DeactivateField);
}发布于 2011-10-05 18:31:01
像这样怎么样?
var num = parseInt(selListVal.replace('myselection', ''));
if(num > 0){
ToggleFields('on', 'section', 'mysection01A', DeactivateField);
ToggleFields('on', 'section', 'mysection01B', DeactivateField);
}
if(num > 1){
ToggleFields('on', 'section', 'mysection02A', DeactivateField);
ToggleFields('on', 'section', 'mysection02B', DeactivateField);
}
if(num > 2){
ToggleFields('on', 'section', 'mysection03A', DeactivateField);
ToggleFields('on', 'section', 'mysection03B', DeactivateField);
}或者用user968951来说明这个想法。
var num = parseInt(selListVal.replace('myselection', ''));
for (var x=1; x<=num; x++){
ToggleFields('on', 'section', 'mysection0' + x + 'A', DeactivateField);
ToggleFields('on', 'section', 'mysection0' + x + 'B', DeactivateField);
}发布于 2011-10-05 18:34:04
您可以使用Switch语句并省略break。这样,还将执行case的以下语句。
switch(selListVal) {
case "myselection03":
ToggleFields('on', 'section', 'mysection03A', DeactivateField);
ToggleFields('on', 'section', 'mysection03B', DeactivateField);
case "myselection02":
ToggleFields('on', 'section', 'mysection02A', DeactivateField);
ToggleFields('on', 'section', 'mysection02B', DeactivateField);
default:
ToggleFields('on', 'section', 'mysection01A', DeactivateField);
ToggleFields('on', 'section', 'mysection01B', DeactivateField);
}发布于 2011-10-05 18:29:28
你可以拆分字符串,得到数字。然后,您可以使用for循环来切换所有字段。
https://stackoverflow.com/questions/7659897
复制相似问题