2014-02-23 48 views
0

我試圖創建的頁面是不同labtests的編輯頁面。每個labtest具有不同的結果,屬於它和不同的正常範圍(因此Min/Max),因此這些值來自PHP中的SQL SELECT語句,然後發送給Smarty。我使用BootStrap,因此我使用X-editable進行編輯。X-editable:Smarty Loop Array

我想使用X-editable編輯這些實驗測試值,但遇到了foreach語句中的問題。編輯功能適用於第一行,但不適用於以下行。我的理解是因爲他們有相同的ID(I.E. a id =「」)。有沒有辦法解決?我對JS非常陌生,所以我很難提出解決方案。

在這裏黑暗中拍攝,但我可以嘗試使用PK作爲id的一部分,並將數組發送到JS以循環以及使鏈接在JS中可編輯?雖然希望有更好的辦法,但這似乎有點愚蠢。

這是我所做的。

<table class="table table-striped"> 
<thead> 
    <th>Test Type</th> 
    <th>Measurement Unit</th> 
    <th>Min. Male</th> 
    <th>Max. Male</th> 
    <th>Min. Female</th> 
    <th>Max. Female</th> 
    <th>Min. Child</th> 
    <th>Max. Child</th> 
</thead> 
{foreach from=$alltests item=alltests} 
    <tr> 
     <td><a href="#" id="valuename" data-type="text" data-pk="{$alltests.ID}" data-url="labtest-edit-post.php" data-title="Enter Test Type">{$alltests.valuename}</a></td> 
     <td><a href="#" id="Units" data-type="text" data-pk="{$alltests.ID}" data-url="labtest-edit-post.php" data-title="Enter Unit of Measurement">{$alltests.Units}</a></td> 
     <td><a href="#" id="MaleMin" data-type="text" data-pk="{$alltests.ID}" data-url="labtest-edit-post.php" data-title="Enter Minimum Male Range Value">{$alltests.MaleMin}</a></td> 
     <td><a href="#" id="MaleMax" data-type="text" data-pk="{$alltests.ID}" data-url="labtest-edit-post.php" data-title="Enter Maximum Male Range Value">{$alltests.MaleMax}</a></td> 
     <td><a href="#" id="FemaleMin" data-type="text" data-pk="{$alltests.ID}" data-url="labtest-edit-post.php" data-title="Enter Minimum Female Range Value">{$alltests.FemaleMin}</a></td> 
     <td><a href="#" id="FemaleMax" data-type="text" data-pk="{$alltests.ID}" data-url="labtest-edit-post.php" data-title="Enter Maximum Female Range Value">{$alltests.FemaleMax}</a></td> 
     <td><a href="#" id="ChildMin" data-type="text" data-pk="{$alltests.ID}" data-url="labtest-edit-post.php" data-title="Enter Minimum Child Range Value">{$alltests.ChildMin}</a></td> 
     <td><a href="#" id="ChildMax" data-type="text" data-pk="{$alltests.ID}" data-url="labtest-edit-post.php" data-title="Enter Maximum Child Range Value">{$alltests.ChildMax}</a></td> 
    </tr> 
{/foreach} 

{literal} 
<script> 
$(document).ready(function() { 
    $('#TestName').editable(); 
    $('#TestPrice').editable(); 
    $('#valuename').editable(); 
    $('#Units').editable(); 
    $('#MaleMin').editable(); 
    $('#MaleMax').editable(); 
    $('#FemaleMin').editable(); 
    $('#FemaleMax').editable(); 
    $('#ChildMin').editable(); 
    $('#ChildMax').editable(); 
}); 
</script> 
{/literal} 

謝謝您的時間!

回答

0

你有沒有試過用一個類而不是id來做?

<td><a href="#" class="is_editable" data-type="text" data-pk="{$alltests.ID}" data-url="labtest-edit-post.php" data-title="Enter Test Type">{$alltests.valuename}</a></td> 
<td><a href="#" class="is_editable" data-type="text" data-pk="{$alltests.ID}" data-url="labtest-edit-post.php" data-title="Enter Unit of Measurement">{$alltests.Units}</a></td> 

等,然後:

$('.is_editable').editable(); 
+0

嘿,感謝回答。 我給它一個去,它已經使所有領域的可編輯性,但它只是保存在HTML中,並沒有更新它最初拉動信息的SQL表。 我正在嘗試一些奇怪的事情,看看我能否解決這個問題,因爲至少這是(希望)比我以前更近一步! – user3342556

+0

修正了它!我做了你所說的,但爲每個步驟製作了div類,並在JS中定義了名稱,如下所示:\t'$('。is_editable_valuename')。editable({name:'valuename'});' Thank you for你的幫助:) – user3342556