2013-03-27 198 views
0

希望得到任何人的幫助......下面的PHP包含一個來自txt文件的項目列表,每個項目旁邊都有一個用於輸入數量的文本框,默認情況下設置爲1 。我試圖在用戶點擊文本框時清除該框,有什麼想法?清除文本框

<input type='text' id='qty' name='$partno' size='1' value='0'> 

到目前爲止,我嘗試過使用JavaScript,但沒有運氣。

 <script> 
     function validateName() 
     { 
      var x=document.forms["purchase"]["visitor"].value; 
      if (x==null || x=="") 
      { 
       alert("Visitor name must be entered"); 
       return false; 
      } 
     } 

     function name() 
     { 
      document.getElementById('qty').value = ""; 
     } 
    </script> 
</head> 

<body> 

    <h1>Items Available</h1> 

    <form id="purchase" name="purchase" action="confirm.php" method="post" onsubmit="return validateName()"> 
     <table> 

      <h3>Visitor Name: <input type='text' name='visitor'></h3> 
      <tr><th></th><th></th><th></th><th>Price</th><th>QTY</th></tr> 

      <?php 
      if (!($data = file('items.txt'))) { 
       echo 'ERROR: Failed to open file! </body></html>'; 
       exit; 
      } 
      foreach ($data as $thedata) { 

       list($partno, $name, $description, $price, $image) = explode('|', $thedata); 
       echo "<tr><td><img src='$image' width='60' height='60' alt='image'></td><td><h3>$name</h3></td><td>&nbsp;&nbsp;&nbsp;&nbsp;$description</td> 
        <td>&nbsp;&nbsp;&nbsp;&nbsp;<b>&pound;$price</b></td><td><input type='text' id='qty' name='$partno' size='1' value='0'></td></tr>"; 
       //<input type='text' size='1' name='partno_qty' value='1'</td> 
      } 
      ?> 

     </table> 

     <input type="submit" value="Purchase"> 
     <input type="reset" value="Clear"> 

    </form> 
+0

的PHP因爲這是相當無關的問題;我認爲如果您爲了更好的可讀性而發佈不帶PHP的HTML,會很有幫助。 – MichD 2013-03-27 19:39:43

+1

另外,您在for循環中設置了相同的id屬性,導致在同一頁上出現重複的id。一個ID只能在HTML文檔中出現一次;它需要是獨一無二的。 – MichD 2013-03-27 19:40:31

回答

1

添加一個onclick或聚焦狀態的處理程序到你的「輸入名稱=數量」的標籤,或者看看使用「佔位符」屬性,這可能不是在某些瀏覽器中工作,你必須支持:

foreach ($data as $thedata) 
{ 
    list($partno, $name, $description, $price, $image) = explode('|', $thedata); 
       echo '<tr><td><img src="' . $image . '" width="60" height="60" alt="image"></td>' 
       . '<td><h3>' . $name . '</h3></td><td>&nbsp;&nbsp;&nbsp;&nbsp;' . $description . '</td>' 
       . '<td>&nbsp;&nbsp;&nbsp;&nbsp;<b>&pound;' . $price . '</b></td>' 
       . '<td><input type="text" id="part-' . $partno . '" ' 
       . 'name="' . $partno . '" size="1" ' 
       . 'value="0" onfocus="this.value=\'\';" placeholder="0"></td>' 
       . '</tr>'; 
} 

「onclick/onfocus」方法會在每次點擊/輸入時清除方框。如果你想用你的 「名」 功能,調用更改爲:

onfocus="name(this);" 

與 「名」 的變化:

function name(obj) 
{ 
    obj.value = ""; 
} 
+1

可能會更好地使用onFocus,以便它可以工作,如果用戶選項卡 – jszobody 2013-03-27 19:41:54

+0

我不能,因爲名稱是一個變量。 – user2170008 2013-03-27 19:43:15

+0

當然可以。如果您必須調用一個函數來執行該操作,則可以_always_將「this」傳遞給它,這是對接收事件的對象的引用。 – 2013-03-27 19:46:32

0

你可以使用HTML5 placeholderrequired屬性:

<form> 
<input type="text" placeholder="Name" required /> 
<input type="submit" value="submit" /> 
</form> 

DEMO

說明:
Internet Explorer 10,Firefox,Opera,Chrome和Safari支持placeholder屬性。 Internet Explorer 10,Firefox,Opera和Chrome支持required標記。這不是在Safari

支持,或者你可以做到這一點的JS是這樣的:

<input type="text" onfocus="inputFocus(this, 'initial text')" onblur="inputBlur(this, 'initial text')" value="initial text" /> 

'initial text'是文本輸入的默認值時,頁面加載e.g(「你的名字」)。

function inputFocus(elm, placeholder){ 
    if (elm.value == placeholder){ elm.value = "" } 

} 

function inputBlur(elm, placeholder){ 
    if (elm.value == "" || elm.value == placeholder){ 
     elm.style.border = "1px solid red"; 
     elm.value = placeholder; 
     alert("Visitor name must be entered"); 
    }else{ 
     elm.style.border = "1px solid green"; 
    } 
} 

DEMO