2013-01-03 32 views
12

tôi cần phải vượt qua một giá trị trong tùy chọn chọn để hành động mà tôi đã agent_id =Làm thế nào để vượt qua giá trị từ <option><select> để tạo thành hành động

bất cứ ai có thể giúp đỡ?

<form method="POST" action="index.php?action=contact_agent&agent_id="> 
<select> 
<option value="1">Agent Homer</option> 
<option value="2">Agent Lenny</option> 
<option value="3">Agent Carl</option> 
</select> 
+1

yuck. Bất kỳ lý do bạn không thể chỉ sử dụng một bài thay vì nhận được một? – JohnFx

+0

Có thể thực hiện điều đó chỉ qua HTML không? –

+0

@JohnFx - Tôi giả sử 'yuck' là để 'trộn cả POST và GET trong cùng một truy vấn', trong khi lạ, được cho phép bởi đặc tả HTML. Xem câu trả lời của @Marko để biết ví dụ về máy chủ mong đợi hành vi này. –

Trả lời

5

với jQuery:
html:

<form method="POST" name="myform" action="index.php?action=contact_agent&agent_id=" onsubmit="SetData()"> 
    <select name="agent" id="agent"> 
    <option value="1">Agent Homer</option> 
    <option value="2">Agent Lenny</option> 
    <option value="3">Agent Carl</option> 
    </select> 
</form> 

jQuery:

$('form').submit(function(){ 
    $(this).attr('action',$(this).attr('action')+$('#agent').val()); 
    $(this).submit(); 
}); 

javascript:

function SetData(){ 
    var select = document.getElementById('agent'); 
    var agent_id = select.options[select.selectedIndex].value; 
    document.myform.action = "index.php?action=contact_agent&agent_id="+agent_id ; # or .getAttribute('action') 
    myform.submit(); 
} 
+0

Tôi nghi ngờ tên chọn nên là 'agent_id' trong trường hợp đó hành động chỉ nên là' index.php? Action = contact_agent' – climbage

+1

Không cần phải bao gồm jQuery để làm một điều đơn giản như vậy ... :( – vdbuilder

+0

@vdbuilder bạn –

16

Bạn không cần phải sử dụng jQuery hoặc Javascript.

Sử dụng thẻ name của lựa chọn và để biểu mẫu thực hiện công việc.

<select name="agent_id" id="agent_id"> 
+4

Bạn có thể vui lòng cung cấp một ví dụ về điều này không? Tôi không thể hiểu đầy đủ đề xuất của bạn.Thông tin –

+1

này có vẻ là một câu trả lời hay nhưng có rất ít thông tin. Có lẽ phải có một số ngữ cảnh –

4

Giống như @Shoaib đã trả lời, bạn không cần bất kỳ jQuery hoặc Javascript nào. Bạn có thể để điều này chỉ đơn giản với html tinh khiết!

<form method="POST" action="index.php?action=contact_agent"> 
    <select name="agent_id" required> 
    <option value="1">Agent Homer</option> 
    <option value="2">Agent Lenny</option> 
    <option value="3">Agent Carl</option> 
    </select> 
    <input type="submit" value="Submit"> 
</form> 
  1. Di&agent_id= từ hình thức hành động vì bạn không cần nó ở đó.
  2. Thêmname="agent_id" đến chọn
  3. Tùy chọn add từ required làm chỉ ra rằng lựa chọn này là bắt buộc.

Vì bạn đang sử dụng PHP, sau đó bằng cách đăng các hình thức để index.php bạn có thể bắt agent_id với $_POST

/** Since you reference action on `form action` then value of $_GET['action'] will be contact_agent */ 
$action = $_GET['action']; 

/** Value of $_POST['agent_id'] will be selected option value */ 
$agent_id = $_POST['agent_id']; 

Như kết luận cho một nhiệm vụ đơn giản như vậy, bạn không nên sử dụng bất kỳ javascript hoặc jQuery. Để @FelipeAlvarez rằng câu trả lời nhận xét của bạn

+0

Cảm ơn bạn đã giải thích chi tiết về những thứ đơn giản mà đôi khi chúng ta không biết chính xác hành vi. –

1

bạn chỉ có thể sử dụng mã riêng của bạn nhưng thêm tên cho thẻ chọn

<form method="POST" action="index.php?action=contact_agent&agent_id="> 
    <select name="agent_id"> 
     <option value="1">Agent Homer</option> 
     <option value="2">Agent Lenny</option> 
     <option value="3">Agent Carl</option> 
    </select> 

sau đó bạn có thể truy cập vào nó như thế này

String agent=request.getparameter("agent_id"); 
2

thay vì cố gắng nắm bắt cả trả lời POST và GET - bạn có thể có mọi thứ bạn muốn trong POST.

Mã của bạn:

<form method="POST" action="index.php?action=contact_agent&agent_id="> 
    <select> 
    <option value="1">Agent Homer</option> 
    <option value="2">Agent Lenny</option> 
    <option value="3">Agent Carl</option> 
    </select> 
</form> 

có thể dễ dàng trở thành:

<form method="POST" action="index.php"> 
    <input type="hidden" name="action" value="contact_agent"> 
    <select name="agent_id"> 
    <option value="1">Agent Homer</option> 
    <option value="2">Agent Lenny</option> 
    <option value="3">Agent Carl</option> 
    </select> 
</form> 

sau đó trong chỉ mục.php - các giá trị này sẽ được điền

$_POST['action'] // "contact_agent" 
$_POST['agent_id'] // 1, 2 or 3 based on selection in form... 
Các vấn đề liên quan