2017-08-03 15 views
0

此代碼有效,但只顯示標題,我們如何執行sql查詢以及javascript函數來更改表單提交中的innerHTML。如何提交表單以及在單擊輸入按鈕時執行javascript函數?

// HTML

<div id='heading'> </div> 

//形式

<form method='post'> 
<input type='submit name='option' value='option' onclick='myFunction()' > 
</form> 

// SQL查詢

if(isset($_POST['option'])===true && empty($_POST['option']===true)){ 
       $sql2= 'SELECT * from maptable ORDER by price'; 
       $result = $mysql->query($sql2); 

    } 

// javascript函數

<script> 
    function myFunction(){ 
    document.getElementById('heading').innerHTML ='OptionName'; 
    } 
    </script> 
+0

您是否使用AJAX for server方執行? –

+0

不,這是基本的javascript –

回答

0

如果我的理解是正確的,你要的是執行PHP代碼之前調用該函數。 只需將onclick="myFunction()"更改爲onsubmit= "return myFunction()"即可。

這也是一個很好的做法,通過try catch塊來對document.getElemen....進行折衷。

+1

你不需要用try/catch來包裝'getElementById'。如果你真的擔心它沒有拉出一個元素,只需抓住變量中的元素並用'if(el)'來測試它。在這種情況下,'#標題'將一直存在。 – SomeShinyObject

+0

仍然是同樣的問題,儘管返回是做什麼的? –

+0

@SomeShinyObject對不起,我沒有得到。 –

0

您目前正在執行此操作的方式不起作用。您直接張貼到您的表單沒有AJAX的同一頁面,這意味着頁面刷新。由於JavaScript是客戶端,它不會保留您設置的標題innerHTML。有一百萬種方法可以解決這個問題。

「修理」這是申報所需的標題在你的PHP處理,然後輸出,在H1元素,如果它存在什麼樣的最快方法:

#PHP 
if(isset($_POST['option'])===true && empty($_POST['option']===true)){ 
    $sql2= 'SELECT * from maptable ORDER by price'; 
    $result = $mysql->query($sql2); 
    // Depending on what you want your Heading to be 
    // $headingName = $_POST['option']; 
    $headingName = "OptionName"; 
} 

設置你的HTML的標題像這樣:

<div id='heading'><?php echo isset($headingName) ? $headingName : '' ?></div> 

此外,您輸入缺少報價,而這種變化,你並不需要JavaScript的部分了:

<input type='submit' name='option' value='option'> 
0
<input type='submit name='option' 

看看你的代碼在這裏。你應該是這樣的<input type='submit' name='option'

因爲我看到你的表單沒有AJAX提交,所以一旦你點擊「提交」按鈕,頁面將被重新加載並返回PHP腳本執行結果。

如果你想提交你可以做到這一點之前,運行 「myFunction的」:

<form id="myForm"> 
    ... 
</form> 

<input type='button' name='option' onclick="myFunction()"> 

和 「myFunction的」:

function myFunction(){ 
    document.getElementById('heading').innerHTML ='OptionName'; 
    document.getElementById('myForm').submit(); 
} 

,或者,如果你想在 「標題」 div顯示一段時間,您可以使用超時提交表單:

function myFunction() { 
    document.getElementById('heading').innerHTML = 'OptionName'; 
    setTimeout(function() { 
    document.getElementById('myForm').submit(); 
    }, <timeout of submitting in milliseconds>); 
} 
相關問題