0

我正在努力寻找让老师们的生活更轻松的最佳方式。

我有一个选择字段和由 tlist sql 查询生成的选项列表。选择字段本身已经附加了一个 javascript,它根据所选选择选项的 id 在其他地方充实其他字段值(信用值和信用类型)。这是为此目的工作的javascript:

 <script type="text/javascript">
function changeValue(){

    var option=document.getElementById('courseno').value;
    if(option=="E100"){
            document.getElementById('credval').value="10";
            document.getElementById('credtype').value="EngFresh";
    }
        else if(option=="E200"){
            document.getElementById('credval').value="10";
            document.getElementById('credtype').value="EngSoph";
        }

}
 </script>

我还需要填充一个隐藏字段,该字段位于(并且必须保留)在生成选择列表的 tlist sql 标记之外。

这是我的sql代码:

<select id="courseno" name="course_number" onchange="changeValue();">
<option value="">Select a Course</option>
~[tlist_sql;
     SELECT cc.course_number, cc.section_number, c.COURSE_NAME  
     FROM cc cc
     RIGHT JOIN COURSES c ON c.COURSE_NUMBER = cc.course_number
     RIGHT JOIN STUDENTS s ON cc.studentid = s.id 
     WHERE cc.studentid = ~(curstudid)
     AND TERMID = ~(curtermid)
     AND c.CreditType LIKE 'English%'
     AND NOT EXISTS (
          SELECT * FROM storedgrades sg
          WHERE sg.studentid = ~(curstudid)
          AND sg.course_number = c.course_number
                    )
     ORDER BY c.course_name;]
<option name="~(course_no)" value="~(course_no)" id="~(secno)">~(course_no).~(secno) (~(cname))</option>

        [/tlist_sql]

        </select></td>
    </tr>

就在它下面是我要填充的隐藏字段:

<td width="25%" class="bold">&nbsp;</td>
<td><input type="text" id="secnum" name="section_number" value=""> </td>

我为每个选项提供了节号作为其 ID,认为我可以使用每个选项的 ID 元素和一些聪明的 jquery 来填充隐藏字段,但我没有运气。我刚刚读到另一个问题,社区很好地回答了你不应该使用以数字开头的选项 ID 标签......所以现在我该怎么办?

有人可以帮我吗?

永远感谢,谢莉

4

2 回答 2

1

我不认为你的问题来自 ID 是一个数字。我们还没有看到您尝试过的 jQuery,但您很可能根本不需要 jQuery。假设您所拥有的工作正常,并且 PowerSchool 代码以您期望的方式放置元素(请在浏览器中查看源代码以确保,如果这不起作用),您应该能够从中获取 ID在你的 changeValue 函数中选择的选项,将其存储在一个变量中,然后将该值推送到“secnum”字段中,如下所示:

function changeValue(){
    var courseDropdown = document.getElementById('courseno');
    var selectedElement=courseDropdown.options[courseDropdown.selectedIndex];
    var option=selectedElement.value;
    var courseNo = selectedElement.getAttribute("id");
    if(option=="E100"){
        document.getElementById('credval').value="10";
        document.getElementById('credtype').value="EngFresh";
    }
    else if(option=="E200"){
        document.getElementById('credval').value="10";
        document.getElementById('credtype').value="EngSoph";
    }

   document.getElementById('secnum').value=courseNo;

}

我改变了设置“选项”变量的方式,但它的工作方式相同。您可能最终想要移动设置“secnum”字段的最后一行,或者将其包装在“if”中,等等;我不知道你的全部要求。

综上所述,在这种情况下使用 jQuery 并没有什么问题,但在这种情况下没有必要,除非您需要极端的向后浏览器兼容性。

于 2015-04-14T20:12:11.367 回答
0

这里的工作示例

您可以使用多个 on change 事件来做任何您想做的事情。在更改时添加一个新事件并填充隐藏的输入。您可以使用填充隐藏输入所需的任何数据为任何 html 元素定义自定义属性

<select id="myselect">
<option>Select</option>
<option data-number="1">One</option>
<option data-number="2">Two</option>
<option data-number="3">Three</option>
<option data-number="4">Four</option>
<option data-number="5">Five</option>
</select>
<input type="hidden" id="hiddenInput"/>

$(document).ready(function(){
$('#myselect').on('change', mySelectChange);
function mySelectChange(){
    console.log('your standard change value  here');
}
$('#myselect').on('change', mySelectChange2);
function mySelectChange2(){
    var option = $("#myselect option:selected");               
    console.log(option.text());
    console.log(option.attr('data-number'));
}});
于 2015-04-14T19:09:55.040 回答