2011-09-22 103 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;     
     } 
    } 

});