2011-09-22 102 views
2

基本上我有一个有几个下拉列表的表单,但是我希望将页面设置为表单提交的操作将基于在一个表单中选择的选项的下降。我想坚持一个提交按钮,所以它似乎有点棘手。任何人都可以将我指向正确的方向吗?提交时更改表单动作的最佳方式

+1

不要。有一个可以处理所有事情的单一动作(即使它是通过if($ _POST ['foo'] ==='bar'){include('bar.php');}')来完成的)。否则你会对JS产生不必要的依赖。 – Quentin

+0

感谢您的提示。但是,该项目仅限于内部使用JS的用户。 –

+0

刚刚意识到这可能是重复的[1925614](http://stackoverflow.com/questions/1925614/jquery-change-form-action-based-on-selection) – jbyrd

回答

1

你可以使用一些jQuery。

$("#yourDropDown").change(function() { 
    var text = $(this).children(':selected').text(); 
    $("#yourForm").attr('action', text); 
}); 

其中“yourDropDown”是你的下拉菜单的ID,而“yourForm”是表单的ID,并在下拉选项的文本是完全合格的URL张贴到。

编辑:另外,我同意昆汀对你的帖子的评论。

+0

正是我在找什么。谢谢!! –

+1

不要以为$('#yourForm')。attr('action')= ...会起作用。应该是$('#yourForm')。attr('action','actionGoesHere.php') – jbyrd

+0

BY JOVE,你可能是对的。固定。 –

1

另一种方法是在窗体上添加onsubmit事件处理程序。如果你的形式看起来是这样的:

<form id="myForm" action="action1.php"> 
    <select id="myDropdown"> 
     <option value="1">Option 1</option> 
     <option value="2">Option 1</option> 
    </select> 
    <input type="submit" value="Submit" /> 
</form> 

添加以下JavaScript(这里使用jQuery):

$(document).ready(function() { 

    $('#myForm').submit(function() { 
     var dropdownVal = $("#myDropdown").val(); 
     switch(dropdownVal) { 
      case 1: 
       $(this).attr('action', 'action1.php'); 
       // do other stuff if you want 
       break; 
      case 2: 
       $(this).attr('action', 'action2.php'); 
       // do other stuff if you want 
       break;     
     } 
    } 

});