2012-02-15 16 views
0

私は以下のHTMLを持っています。提出ボタンをクリックしないでドロップダウン選択*でフォームを自動提出しますか? AJAX/PHP

現在、ユーザーはフォームを送信するために「移動」ボタンを押すことに依存しています。

これを変更して、ユーザーがドロップダウンオプションを選択するたびに送信することはできますか?ここで任意のポインタのための

// dept.js 

/* This page does all the magic for applying 
* Ajax to an employees listing form. 
* The department_id is sent to a PHP 
* script which will return data in HTML format. 
*/ 

// Have a function run after the page loads: 
window.onload = init; 

// Function that adds the Ajax layer: 
function init() { 

    // Get an XMLHttpRequest object: 
    var ajax = getXMLHttpRequestObject(); 

    // Attach the function call to the form submission, if supported: 
    if (ajax) { 

    // Check for DOM support: 
    if (document.getElementById('results')) { 

     // Add an onsubmit event handler to the form: 
     document.getElementById('dept_form').onsubmit = function() { 

     // Call the PHP script. 
     // Use the GET method. 
     // Pass the department_id in the URL. 

     // Get the department_id: 
     var did = document.getElementById('did').value; 

     // Open the connection: 
     ajax.open('get', 'dept_results_ajax.php?did=' + encodeURIComponent(did)); 

     // Function that handles the response: 
     ajax.onreadystatechange = function() { 
      // Pass it this request object: 
      handleResponse(ajax); 
     } 

     // Send the request: 
     ajax.send(null); 

     return false; // So form isn't submitted. 

     } // End of anonymous function. 

    } // End of DOM check. 

    } // End of ajax IF. 

} // End of init() function. 

// Function that handles the response from the PHP script: 
function handleResponse(ajax) { 

    // Check that the transaction is complete: 
    if (ajax.readyState == 4) { 

    // Check for a valid HTTP status code: 
    if ((ajax.status == 200) || (ajax.status == 304)) { 

     // Put the received response in the DOM: 
     var results = document.getElementById('results'); 
     results.innerHTML = ajax.responseText; 

     // Make the results box visible: 
     results.style.display = 'block'; 

    } else { // Bad status code, submit the form. 
     document.getElementById('dept_form').submit(); 
    } 

    } // End of readyState IF. 

} // End of handleResponse() function. 

多くのおかげで:レコードの

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" 
     "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> 
<head> 
    <meta http-equiv="content-type" content="text/html; charset=utf-8" /> 
    <title>Employees by Department</title> 
    <script src="ajax.js" type="text/javascript"></script> 
    <script src="dept.js" type="text/javascript"></script> 
    <style type="text/css" media="all">@import "style.css";</style> 
</head> 
<body> 
<!-- dept_form_ajax.html --> 
<p>Select a department and click 'GO' to see the employees in that department.</p> 
<form action="dept_results.php" method="get" id="dept_form"> 
<p> 
<select id="did" name="did"> 
<option value="1">Human Resources</option> 
<option value="2">Accounting</option> 
<option value="3">Marketing</option> 
<option value="4">Redundancy Department</option> 
</select> 
<input name="go" type="submit" value="GO" /> 
</p> 
</form> 

<select id="results"></select> 
</body> 
</html> 

は、ここで私の dept.jsファイルの内容です。

答えて

3

これはあなたのアイデアを与えるかもしれません。

を置き換える:これで

$('#did').change(function() { 

いうか:これで

document.getElementById('dept_form').onsubmit = function() { 

document.getElementById('did').onchange = function() { 
+0

これは私が後になったものだと思います。私の 'dept.js'ファイルを編集するときにどこにこれを組み込むのか説明できますか?多くのありがとう – michaelmcgurk

+0

これは機能しませんでした。私はJSのエラーコンソールを見て、報告します。ここであなたの助けをありがとう。 – michaelmcgurk

+0

メニューから選択する前に: 'Error:missing)引数リストの後に ソースファイル:http://localhost/dept.js 行:50、列:4 ソースコード: } // DOMチェックの終了。 ' – michaelmcgurk

1

あなたは選択して使用しようとすることができます:

<select id="did" name="did" onchange="this.form.submit();"> 
+0

これで唯一の問題は、それは私のAJAX機能を崩壊させることです。私はそれがAJAXとまだ動作することを期待できると思っていました。 – michaelmcgurk

関連する問題