0

我有一个包含 4 个单独的下拉选项表单的网页,并且我有一个 javascript 函数,当通过鼠标更改任何表单时会调用该函数。

如何确定从事件对象更改了哪些特定表单以及随后进行的特定选项更改?

我似乎所有的例子都假设我对每个单独的表单都有一个专用的 javascript 函数。但我希望能够“即时”构建表单,因此我需要通过单个 javascript 函数传递所有表单更改。

回答这个问题 - 这里有更多信息:

我确实使用 jQuery(但我是新手) - javascript 事件设置代码行是:

 document.onchange=this.audioselect  

并且 audioselect 函数目前只有一行 - 一个警报,证明每次表单更改都会调用它:

alert("audio Select this: " + evtobj.type.toString(). ). 

表单的定义与此类似(每个后续表单名称都会递增:

"

    <div id="videoSlot" style="position: absolute; left:250px; top:450.0px; background-     color:green;">
           <img src="http://localhost:9000/HomeVu1/HomeVu1/skin/HomeVu.jpg"
                                width="210.0"
                                height="140.0"
                                           alt="HomeVu1/skin/HomeVu.jpg"
                                           title="HomeVu1/skin/HomeVu.jpg"/>
                                                      <br /> 
    <strong>Select Image 1 Audio
    <form name="audio_form_1" >
      <select name="menu_1" >
                <br />
    <option name = "audio_1" value = "1" >OH Intro </option>

    <option name = "audio_2" value = "2" >OH Front </option>

    <option name = "audio_3" value = "3" >OH Plot </option>

    <option name = "audio_4" value = "4" >OH Hall </option>
</select>   <br /> </form>  </div>"

感谢期待。

-麦克风

4

3 回答 3

0

也许为每个表单提供唯一的 id,以便您知道单击了哪个下拉菜单并相应地运行您专用的 javascript 函数。

于 2013-04-25T15:19:27.977 回答
0

jQuery 非常适合这项任务。在不同的浏览器中附加事件可能会很痛苦。这是一个指向 jsFiddle 的链接,它显示了一个简单的示例,说明如何实现您所说的内容:http: //jsfiddle.net/UK2zH/1/

您需要单击屏幕左上角的运行按钮,然后从表单中进行选择以查看您从何处选择的警报。

在 jsFiddle 中,我将一个 jQuery 事件侦听器附加到文档 - 如果要动态创建表单,这很重要。事件监听器设置为只关注表单元素中发生的事件。

$(document).on("change", "form", function(e){
    var currentForm = $(this);
    var formName = currentForm.attr('name');
    var selectedOption = currentForm.find('option:selected').val();
    alert("form: " + formName + ", selected: " + selectedOption);
});

附加的函数将接收触发事件的元素作为“this”。然后我们可以使用更多的 jQuery(通过在 jQuery 选择器中包装“this”)来轻松访问表单名称和选定选项等。

于 2013-04-25T18:52:16.423 回答
0

感谢您的意见 - 我有一些工作。首先,我必须将脚本与我拥有的另一组鼠标事件函数分开放置,formName 也未定义,而(奇怪的是)选项 selectedOption 设置正确。但是,能够从“this.name”中获取表单名称 - 请参见下面的脚本:

有点混合,但确实有效。

"

$(document).on("change", "form", function(e){

             var currentForm = $(this);
             var formName = currentForm.attr('name');
     var selectedOption = currentForm.find('option:selected').val();

    alert(
        "audio Select Form: " + currentForm.name + " Option: " + selectedOption
            + " this name:" + this.name 
        )

});
</script>"

谢谢 - 迈克

于 2013-04-26T14:46:57.967 回答