2011-09-06 68 views
0

背景:我正在使用的網站在頂部有一個搜索欄。用戶輸入產品的部件代碼,網站返回有關該產品的信息。表單提交 - 預驗證拋出IE關閉

所以,我有一個基本的搜索欄,張貼參數從一個HTML表單到一個PHP腳本,然後在MySQL服務器上查找以獲得產品。

問題是因爲某些零件代碼有「#」字符,我必須使用Javascript來插入轉義字符,否則我只會得到PHP腳本中的部分代碼。

實施例 - 如123

我使用的形式,其被填充有文本框值的隱藏值,通過在Javascript中逃逸()函數修改123#ABC將被讀。

這是我目前的代碼,它適用於除IE以外的所有瀏覽器。

任何幫助,將不勝感激:)

<script language="jscript"> 
    function changeTextBox() 
    { 
     hiddenSearch.value = escape(txtSearch.value); 
     formSearch.submit; 
    } 
</script> 

<form id="formSearch" name="Search" action="?page=search" method="post"> 
    Search by <u>Part Code</u> or <u>Description</u> 
    <input id="txtSearch" type="text" size="35"> 
    <input id="hiddenSearch" name="Search" type="hidden"> 
    <input name="Submit" onclick='jscript:changeTextBox();' type="submit" value="Submit"> 
</form> 
+0

僅在JavaScript中轉義不會阻止惡意用戶。另外如果用戶按下輸入而不是點擊按鈕怎麼辦?你至少需要一個onsubmit處理程序。 –

+1

我會嘗試像'

'而不是提交的onclick。有時,瀏覽器遇到問題會冒泡。 – Benno

+0

Andre我們還處於早期階段,該網站還沒有開通。我會記住這一點,雖然 編輯:本諾,謝謝。這是問題,它現在正在工作:) –

回答

3

看看changes--我想有你的JavaScript的問題。

<script language="jscript"> 
     function changeTextBox() 
     { 
      document.getElementById("hiddenSearch").value = escape(document.getElementById("txtSearch").value); 
      this.submit(); 
     } 
    </script> 

<form id="formSearch" name="Search" action="?page=search" method="post" onsubmit='changeText()'> 
    Search by <u>Part Code</u> or <u>Description</u> 
    <input id="txtSearch" type="text" size="35"> 
    <input id="hiddenSearch" name="Search" type="hidden"> 
    <input name="Submit" type="submit" value="Submit"> 
</form> 
+0

謝謝你的指點,問題是,onclick是在錯誤的地方。它應該在表單標籤中。 –

+0

謝謝 - 我稍微修改了代碼。我錯過了jScript部分 - onSubmit表單是最好的選擇。 –