2013-10-16 63 views
0

我已經創建了一個正在從數據庫中填充的形式。啓用/禁用特定的行值

結果顯示在屏幕上,默認情況下禁用我除了在每一行的初始下拉列表中的所有表單域。

改變下拉列表的值應該啓用或禁用對特定行的表單字段。這僅適用於第一行,但不適用於後續行。

我想這是因爲我只引用的第一行,但我要知道如何改變這種..

這是我到目前爲止已經有..記住裸這只是2行,實時數據可能會顯示很多行。

<html> 
<head> 
    <title>test</title> 
    <script src="jquery-1.8.0.js" type="text/javascript"></script> 
    <script type="text/javascript"> 
     $(document).ready(function() { 
     $('#option').change(function(){ 
      if($(this).val()=="2"){ 
      $("#name").removeAttr("disabled"); 
      $("#id").removeAttr("disabled"); 
      $("#home").removeAttr("disabled"); 
      $("#active").removeAttr("disabled"); 
      } 

      if($(this).val()!="2"){ 
      $("#name").attr("disabled", "disabled"); 
      $("#id").attr("disabled", "disabled"); 
      $("#home").attr("disabled", "disabled"); 
      $("#active").attr("disabled", "disabled"); 
      } 
     }); 
     }); 
    </script> 
</head> 
<body> 
    <form id='usr' method='post' action='test.php'> 
     <table border='1' width='60%'> 
      <tr> 
       <th>Val1</th> 
       <th>Val2</th> 
       <th>Val3</th> 
       <th>Val4</th> 
       <th>Val5</th> 
       <th>Val6</th> 
      </tr> 
      <tr align='center'> 
       <td> 
        <select name='option' id='option' /> 
         <option></option> 
         <option value='1'>Option1</option> 
         <option value='2'>Option2</option> 
        </select> 
       </td> 
       <td>USR1</td> 
       <td><input type='text' name='name[]' id='name' value='' disabled='disabled'/></td> 
       <td><input type='text' name='id[]' id='id' value='' disabled='disabled'/></td> 
       <td> 
        <select name='home[]' id='home' disabled='disabled'/> 
         <option value='North'>North</option> 
         <option value='South'>South</option> 
         <option value='Other'>Other</option> 
        </select> 
       </td> 
       <td> 
        <select name='active[]' id='active' disabled='disabled'/> 
         <option value=''></option> 
         <option value='1'>Yes</option> 
         <option value='2'>No</option> 
         <option value='3'>Dead</option> 
         <option value='4'>Other</option> 
        </select> 
       </td> 
      </tr> 
      <tr align='center'> 
       <td> 
        <select name='option' id='option' /> 
         <option></option> 
         <option value='1'>Option1</option> 
         <option value='2'>Option2</option> 
        </select> 
       </td> 
       <td>USR2</td> 
       <td><input type='text' name='name[]' id='name' value='' disabled='disabled'/></td> 
       <td><input type='text' name='id[]' id='id' value='' disabled='disabled'/></td> 
       <td> 
        <select name='home[]' id='home' disabled='disabled'/> 
         <option value='North'>North</option> 
         <option value='South'>South</option> 
         <option value='Other'>Other</option> 
        </select> 
       </td> 
       <td> 
        <select name='active[]' id='active' disabled='disabled'/> 
         <option value=''></option> 
         <option value='1' >Yes</option> 
         <option value='2' >No</option> 
         <option value='3' >Dead</option> 
         <option value='4'>Other</option> 
        </select> 
       </td> 
      </tr> 
     </table> 
    </form> 
</body> 
</html> 

有人可以幫助我得到這個工作的所有行。在行的開頭選擇下拉菜單時,它只會影響該行。

謝謝:)

+1

所有表單字段具有相同的'name'和'id'。您無法區分它們,因此瀏覽器默認爲_first_。這是你看到的行爲。 – Halcyon

+0

感謝這就是我假設。由於這是從DB來的時候可以增加數到每個ID,所以他們會成爲'name1','id1','name2','id2'等,但我怎麼引用他們在jQuery中? – JeffVader

+0

這是jQuery不擅長的部分。有解決方法,但他們都非常討厭。你可以嘗試找到其他人如何動態生成數據/表單的例子。 – Halcyon

回答

0

排序。

使用一類的變化並獲得該行的ID,那麼該前綴用來添加或刪除殘疾人ID查找。

每個ID = '名稱',ID = 'ID' 正在從DB updaed所以他們現在出現name1, id1, name2, id2.

由於喬治類的記載。

下面的例..

<html> 
<head> 
<title>test</title> 
<script src="jquery-1.8.0.js" type="text/javascript"></script> 
<script type="text/javascript"> 
$(document).ready(function() { 
$('.option').change(function(){ 
    var id = $(this).closest('td').parent()[0].sectionRowIndex; 

    if($(this).val()=="2"){ 
    $("#name"+id).removeAttr("disabled"); 
    $("#id"+id).removeAttr("disabled"); 
    $("#home"+id).removeAttr("disabled"); 
    $("#active"+id).removeAttr("disabled"); 
    } 

    if($(this).val()!="2"){ 
    $("#name"+id).attr("disabled", "disabled"); 
    $("#id"+id).attr("disabled", "disabled"); 
    $("#home"+id).attr("disabled", "disabled"); 
    $("#active"+id).attr("disabled", "disabled"); 
    } 
    }); 
}); 
</script> 
</head> 
<body> 

<form id='usr' method='post' action='test.php' ><table border='1' width='60%'><tr><th>Val1</th><th>Val2</th><th>Val3</th><th>Val4</th><th>Val5</th><th>Val6</th></tr> 

<tr align='center'> 
<td><select name='option' class='option' /><option></option><option value='1'>Option1</option><option value='2'>Option2</option></select></td> 
<td>USR1</td> 
<td><input type='text' name='name[]' id='name1' value='' disabled='disabled'/></td> 
<td><input type='text' name='id[]' id='id1' value='' disabled='disabled'/></td> 
<td><select name='home[]' id='home1' disabled='disabled'/><option value='North'>North</option><option value='South'>South</option><option value='Other'>Other</option></select></td> 
<td><select name='active[]' id='active1' disabled='disabled'/><option value=''></option><option value='1' >Yes</option><option value='2' >No</option><option value='3' >Dead</option><option value='4'>Other</option></select></td> 
</tr> 

<tr align='center'> 
<td><select name='option' class='option' /><option></option><option value='1'>Option1</option><option value='2'>Option2</option></select></td> 
<td>USR2</td> 
<td><input type='text' name='name[]' id='name2' value='' disabled='disabled'/></td> 
<td><input type='text' name='id[]' id='id2' value='' disabled='disabled'/></td> 
<td><select name='home[]' id='home2' disabled='disabled'/><option value='North'>North</option><option value='South'>South</option><option value='Other'>Other</option></select></td> 
<td><select name='active[]' id='active2' disabled='disabled'/><option value=''></option><option value='1' >Yes</option><option value='2' >No</option><option value='3' >Dead</option><option value='4'>Other</option></select></td> 
</tr> 

</form></body> 
</html> 
1

OK首先你最好你class,而不是id因爲id。我已經工作示例建立小提琴:http://jsfiddle.net/9EfvS/

這裏是代碼:

12 ADN 314是有條件的,就意味着進入唯一的ID(更好的使用它,而不是隻是行數1,2,3等..),因爲它發佈到服務器與數據庫進行比較後容易項

$(document).ready(function() { 
    $('.blah').change(function() { 

    var parentTR = $(this).parents('tr'); 
    if ($(this).val() == "2") { 
     $(parentTR).find(".name").removeAttr("disabled"); 
     $(parentTR).find(".id").removeAttr("disabled"); 
     $(parentTR).find(".home").removeAttr("disabled"); 
     $(parentTR).find(".active").removeAttr("disabled"); 
    } 

    if ($(this).val() != "2") { 
     $(parentTR).find(".name").attr("disabled", "disabled"); 
     $(parentTR).find(".id").attr("disabled", "disabled"); 
     $(parentTR).find(".home").attr("disabled", "disabled"); 
     $(parentTR).find(".active").attr("disabled", "disabled"); 
    } 

    }); 
}); 


<form id='usr' method='post' action='test.php'> 
<table border='1' width='60%'> 
    <tr> 
     <th>Val1</th> 
     <th>Val2</th> 
     <th>Val3</th> 
     <th>Val4</th> 
     <th>Val5</th> 
     <th>Val6</th> 
    </tr> 
    <tr align='center'> 
     <td> 
      <select name='option[12]' id='option12' class='blah' /> 
      <option></option> 
      <option value='1'>Option1</option> 
      <option value='2'>Option2</option> 
      </select> 
     </td> 
     <td>USR1</td> 
     <td> 
      <input type='text' name='name[12]' class='name' value='' disabled='disabled' /> 
     </td> 
     <td> 
      <input type='text' name='id[12]' class='id' value='' disabled='disabled' /> 
     </td> 
     <td> 
      <select name='home[12]' class='home' disabled='disabled' /> 
      <option value='North'>North</option> 
      <option value='South'>South</option> 
      <option value='Other'>Other</option> 
      </select> 
     </td> 
     <td> 
      <select name='active[12]' class='active' disabled='disabled' /> 
      <option value=''></option> 
      <option value='1'>Yes</option> 
      <option value='2'>No</option> 
      <option value='3'>Dead</option> 
      <option value='4'>Other</option> 
      </select> 
     </td> 
    </tr> 
    <tr align='center'> 
     <td> 
      <select name='option[314]' id='option314' class='blah' /> 
      <option></option> 
      <option value='1'>Option1</option> 
      <option value='2'>Option2</option> 
      </select> 
     </td> 
     <td>USR1</td> 
     <td> 
      <input type='text' name='name[314]' class='name' value='' disabled='disabled' /> 
     </td> 
     <td> 
      <input type='text' name='id[314]' class='id' value='' disabled='disabled' /> 
     </td> 
     <td> 
      <select name='home[314]' class='home' disabled='disabled' /> 
      <option value='North'>North</option> 
      <option value='South'>South</option> 
      <option value='Other'>Other</option> 
      </select> 
     </td> 
     <td> 
      <select name='active[314]' class='active' disabled='disabled' /> 
      <option value=''></option> 
      <option value='1'>Yes</option> 
      <option value='2'>No</option> 
      <option value='3'>Dead</option> 
      <option value='4'>Other</option> 
      </select> 
     </td> 
    </tr>   
</form>