2012-03-22 58 views
0

我有一個JavaScript的形式有點問題提交問題,這裏是腳本JavaScript函數,並提交信息

function search(val1, val2) 
{ 
    var f=document.search_form; 
    $("#val1").val(val1); 
    $("#val2").val(val2); 
    f.submit(); 
} 

,這裏是形式

<form name="search_form" action="val/search/" method="get"> 
    <input type="hidden" id="search_val1" name="search[val1]" value=""> 
    <input type="hidden" id="search_val2" name="search[val2]" value=""> 
...... 
    <input name="" type="button" value="Click" onclick="search({$smarty.const.VAL1}, {$smarty.const.VAL2});"> 
</form> 

我知道的發佈形式是後「表單已提交」,我不知道按鈕點擊後還有哪些內容正在使用和處理。有人能告訴我更多這方面的情況嗎?

+0

問題是什麼? – Trevor 2012-03-22 02:07:01

+2

這個問題有點泛泛。你在問表單如何工作,或者PHP如何處理表單請求?作爲一個非常基本的介紹,'form'元素中的'input','textareea'和'select'元素具有name屬性,將會添加在您提交表單時發生的HTTP請求。這個請求然後由你的服務器處理並傳遞到你的代碼的一部分,它處理'form'元素'action'屬性中指定的動作。在你的情況下,這是'val/search /'。要了解更多信息,您必須閱讀手冊。 – Milimetric 2012-03-22 02:09:51

+0

謝謝,但我知道你已經說了什麼,我正在尋找更多的東西。什麼是內部提交和行動(控制器)中的用戶定義函數將獲取和處理請求,我想知道。 – 2012-03-22 02:20:19

回答

1

使用jQuery綁定整個表單提交,而不是onclick事件,這樣你就不必擔心用戶按下文本字段中輸入並提交表單

function search(val1, val2) 
{ 
    var f=document.search_form; 
    $("#val1").val(val1); 
    $("#val2").val(val2); 
    f.submit(); 
} 

$('form[name=search_form]').submit(function(e) { 
    search("{$smarty.const.VAL1}", "{$smarty.const.VAL2}"); 
}); 

上面運行之後,瀏覽器將調用正常提交到val/search/,因爲您不告訴它停止默認事件(via e.preventDefault()

+0

謝謝你的好建議, – 2012-03-22 02:25:12