2013-04-10 60 views
0

我對JavaScript有點新。我有一個具有多種輸入類型的html表單,但是具有相同名稱的多種類型。在將表單中的數據插入數據庫之前,我需要驗證表單。我能夠在沒有JS驗證的情況下更新並插入數據庫,但由於處理具有相同名稱的輸入的複雜性,我無法使用JavaScript執行驗證部分。 下面的形式:如何在javascript中驗證多個相同類型的輸入並使用相同的名稱

<form name="confirmation" method="post" action="appointment.php" onsubmit="return check()"> 

     <label>Restaurant Name: </label> 
     <input name="r_name[]" type="text" value="<?php echo $row[0]?>"><br> 
     <label>Appointment Date: </label> 
     <input name="app_date[]" type="date" value="<?php echo $row[1]?>"><br> 
     Confirm:<select name="confirm[]"> 
      <option value=""></option> 
      <option value="yes">Yes</option> 
      <option value="no">No</option> 
     </select><br><br> 

    </form> 

這裏是PHP代碼來更新數據庫:

<?php 
if(isset($_POST['submit'])){ 
    $names= $_POST['r_name']; 
    $dates=$_POST['app_date']; 
    $confirm=$_POST['confirm']; 
    //echo $count; 
    for($i=0;$i<$count;$i++){ 
    //echo "success"; 
     $value=$confirm[$i]; 
     if($value=="yes") 
      $value="y"; 
     else 
      $value="n"; 
     // echo $value; 
     $result= mysql_query("update appointment set confirm='".$value."' where rname='".$names[$i]."';"); 
    }      
}?> 

要插入/表單到數據庫更新相同名稱的數據,我不得不聯想[ ]到他們各自的名字,因爲這是簡單的出路。但我有問題在驗證部分在JavaScript中評估它。任何人都可以向我建議如何使用任何用於上述表單中使用的輸入類型的名稱的小代碼片段。謝謝。

+1

這是所有的HTML嗎?我沒有看到多個具有相同'name'的輸入元素。 – Steve 2013-04-10 22:02:16

+1

給幾個元素賦予相同的「名稱」是可以的,但不能給它們相同的「id」值。 – Pointy 2013-04-10 22:02:52

+0

@Steve我動態生成它們(上面的HTML塊),所以你沒有看到具有相同名稱的輸入元素。 – 2013-04-10 22:08:37

回答

0

如果name s爲多個輸入元素一樣,你可以在元件上使用唯一id■如果要針對特定​​的元素,也可以使用class ES的目標一組相似的元素。

<form> 
    <input name="myInput[]" id="myInput_0" class="myInput" type="text" value=""> 
    <input name="myInput[]" id="myInput_1" class="myInput" type="text" value=""> 
    <input name="myInput[]" id="myInput_2" class="myInput" type="text" value=""> 
</form> 

現在您可以myInput[0]作爲getElementById('myInput_0')或全部myInput[] S作爲getElementByClassName('myInput')

+0

由於我動態生成的表單大小取決於從服務器端使用PHP的數據,這將是一個不明智的選擇使用ID標記,因爲我們不知道具體名稱相同的項目數量將生成執行客戶端的形式驗證。因此,我確實認爲這將是一個不好的選擇。 – 2013-04-10 22:23:00

+0

那麼,你只剩下'class'方法,並循環從getElementsByClassName返回的節點數組 – Steve 2013-04-10 22:25:51

相關問題