2016-09-30 52 views
0

我有一個錯誤的JavaScript。這個javascript創建一個動態表添加和刪除。與php功能不兼容的javascript錯誤

實際上,腳本是正確的,並且工作正常,但是,在我的工具中,我有一個函數,而不是用這個javascript創建問題,我想知道是否可以修改此javascript。

的問題來自這個元素誰創建下拉(HTML::selectMenu

<td class='col-md-2'><?php echo HTML::selectMenu('suppliers_id[["+i+"]', $OSCOM_ProductsAdmin->SupplierDropDown()); ?> 

我有這個功能不是不能碰別的本站一點兒也不工作。

public static function output($string, $translate = null) { 
    if (!isset($translate)) { 
    $translate = ['"' => '&quot;']; 
    } 

     return strtr(trim($string), $translate); 
    } 

中的HTML HTML::selectMenu功能(下拉)內我有內部

$field = '<select name="' . static::output($name) . '"'; 

當我編輯htmlpage生成此代碼成爲

<select name="suppliers_id[[&quot;+i+&quot;]" id="suppliers_id[[&quot;+i+&quot;]" class="form-control"><option value="">--Aucun--</option><option value="1">test</option></select> 

和這裏的問題來了:[&quot;+i+&quot;]和必須是['+i+'](如javascript)

如何解決問題?

謝謝

<script> 
    $(document).ready(function(){ 
     var i=<?php echo $id-1; ?>; 
     $("#add_row").click(function(){ 
     $('#addr'+i).html("<td>"+ (i+1) +"</td>" + 

      "<td class='col-md-2'><input name='id["+i+"]' type='text' placeholder='Name' class='form-control' /> </td><td class='col-md-2'><?php echo HTML::selectMenu('suppliers_id[["+i+"]', $OSCOM_ProductsAdmin->SupplierDropDown()); ?></td><td class='col-md-2'><input name='discount_quantity["+i+"]' type='text' placeholder='Qty' class='form-control'></td><td class='col-md-2'><input name='discount_supplier_price["+i+"]' type='text' placeholder='Supplier Price' class='form-control'></td><td class='col-md-2'><input name='discount_customer["+i+"]' type='text' placeholder='Without %' class='form-control'></td>"); 


     $('#tab_logic').append('<tr id="addr'+(i+1)+'"></tr>'); 
     i++; 
     }); 
     $("#delete_row").click(function(){ 
     if(i>1){ 
      $("#addr"+(i-1)).html(''); 
      i--; 
     } 
     }); 

    }); 
</script> 
+0

你有一個參數覆蓋翻譯的解決方案,所以只是做'靜::輸出($名,陣列())' – adeneo

+0

對不起,我不understant – kurama

+0

你的問題並不完全清楚,但爲什麼你不能像'$ translate = [''''=>'\''];;''' – Vijai

回答

0

我真的不明白,爲什麼你需要連敷該output()方法在firstplace。所有它做的是將報價更換你不想要的,所以:

1)甚至不適用這個方法:

$field = '<select name="'.$name.'"'; 

2)如果該方法是不完整的方法,它沒有更多的,你沒有顯示或者是在你不能修改更高級別的功能/方法,那麼就轉換爲使用htmlspecialchars_decode($str,ENT_QUOTES)輸出:

echo htmlspecialchars_decode(addslashes('<select name="suppliers_id[&quot;+i+&quot;]" id="suppliers_id[&quot;+i+&quot;]" class="form-control"><option value="">--Aucun--</option><option value="1">test</option></select>'), ENT_QUOTES); 

您可能必須事先使用addslashes(),然後解碼。

0

我發現包括str_replace

   <div><a id="add_row" class="btn btn-primary pull-left">Add Row</a><a id='delete_row' class="pull-right btn btn-danger">Delete Row</a><br /><br/></div> 
    <script> 
    $(document).ready(function(){ 
     var i=<?php echo $new_id; ?>; 
     $("#add_row").click(function(){ 
     $('#addr'+i).html("<td>"+ (i+1) +"<?php echo str_replace('"', '\'', HTML::hiddenField('id["+i+"]', "+i+")); ?></td>" + 
      "<td class='col-md-2'><?php echo str_replace('"', '\'', HTML::selectMenu('suppliers_id["+i+"]', $OSCOM_ProductsAdmin->SupplierDropDown())); ?></td><td class='col-md-2'><?php echo str_replace('"', '\'', HTML::selectMenu('customers_group_id["+i+"]', B2BAdmin::getCustomersGroup('Normal'))); ?></td><td class='col-md-2'><?php echo str_replace('"', '\'', HTML::inputField('discount_quantity["+i+"]', '', 'placeholder="Qty"')); ?></td><td class='col-md-2'><?php echo str_replace('"', '\'', HTML::inputField('discount_supplier_price["+i+"]', '', 'placeholder="Supplier Price"')); ?></td><td class='col-md-2'><?php echo str_replace('"', '\'', HTML::inputField('discount_customer["+i+"]', '', 'placeholder="Without %"')); ?></td>"); 

     $('#tab_logic').append('<tr id="addr'+(i+1)+'"></tr>'); 
     i++; 
     }); 
     $("#delete_row").click(function(){ 
     if(i>1){ 
      $("#addr"+(i-1)).html(''); 
      i--; 
     } 
     }); 

    }); 
</script>