2016-08-22 63 views
0

我會自動在jQuery中創建一個表的行。通過點擊按鈕addRow,功能addRow()將做到這一點象下面這樣:有沒有一種方法可以在幼蟲刀片模板中使用JavaScript變量?

function addRow(){ 

    var rowCount = $("table tr").length - 1; 
    var row = '<tr><td><input name=「item[‘+ (rowCount+1) + ']" type="text" value="{{ old(‘item') }}」> @if ($errors->has(‘item’)){{ $errors->first(‘item’) }}@endif<td></tr>' ; 

$("table").append(row); 

} 

我會調用這個方法5次,它會創建5個輸入區域,其名稱是物品1。 item2,item3,item4,item5。

在服務器端,我使用Laravel 5.2 Form Request Validation來驗證每個輸入字段。

但是,如果驗證失敗,舊輸入錯誤將不設置正確的輸入字段,因爲

我不能把JavaScript變量rowCount時爲「{{老(‘項目’)}}」這是一個葉片模板。 和相同的是{{$錯誤 - >第一( '項目')}}。

我試圖寫這樣

'value="{{ old('giftValue[' . $rowCount .']') }}">' 

'value="{{ old('giftValue[' + $rowCount +’]’) }}">' 

但沒有工作。

沒有人有解決這個問題的好主意嗎?

+0

您結束''​​標籤是不正確的.. – jaysingkar

回答

0

謝謝每一個回答我的問題,但 沒有回答能解決這兩個舊值和驗證錯誤的問題。

最後,我寫了JS代碼,我也寫了一個幾乎與JS相同的服務器端代碼。正如Mina Abadir所說的,我不應該將服務器端代碼添加到JS中。

如果驗證失敗,我只在服務器端代碼中渲染Oldvalue和驗證錯誤,這樣,最困難的部分是我必須使用\ Validator :: make將每個錯誤添加到變量($ items [$ key] ['oldvalue']和$ items [$ key] ['error']),它們將顯示在服務器端代碼中。

服務器端代碼,如:

@if(validation_failed){

<input name="item[{{ $key }}]" type="text" value="{{ $items[$key]['oldvalue'] }}"> 
    @if (!empty($items[$key]['error']))<p class="formTable_error">{{ $items[$key]['error'] }}</p>@endif 

}

0

做一個Ajax調用路由和顯示使用JavaScript。是這樣的:

$.ajax({ 
       url: '/get-rows', 
       data: { code: code } 
      }) 
      .done(function(res) { 
       var response = $.parseJSON(res); 
       console.log(response); 
       var $id = $('<input type=hidden name=id />').val(res.id); 
       var $email = $('<input type=hidden name=email />').val(res.email); 

      $('form[name="rows"]').append($id).append($email).submit(); 
      }) 
      .fail(function(err) { 
       console.log('Error: ' + err.status); 
     }); 
0

我將創建的輸入作爲輸入數組:

function addRow(){  
    var rowCount = $("table tr").length - 1; 
    var row = '<tr><td><input name=「items[]" type="text"></td></tr>'; 

    $("table").append(row); 
} 

這可以在後端很容易地驗證。你不應該添加服務器端代碼到JS,因爲它不會工作。

在您的視圖中,檢查old值是否存在,並因此運行循環以添加items

@if(old('items')) 
    @for($i=0;$i<=count(old('items'));$i++) 
     <tr><td><input name=「items[]" type="text" value="old('items')[$i]"></td></tr> 
    @endforeach 
@endif 
0

不知道這是否正確方法,但可以嘗試將錯誤和oldInputs存儲在變量中並使用它。下面

例子:

function addRow(){ 

    var errors = { 
    item1:{{$errors->first('item1')}}, 
    item2:{{$errors->first('item2')}}, 
    item3:{{$errors->first('item3')}}, 
    item4:{{$errors->first('item4')}}, 
    item5:{{$errors->first('item5')}} 
    } 
    var rowCount = $("table tr").length - 1; 
    var row = '<tr> 
       <td> 
        <input name=「item[‘+ (rowCount+1) + ']" type="text" value="{{ old(‘item') }}」> 
        '+errors["item"+(rowCount+1)]+' 
       </td> 
      </tr>' ; 

$("table").append(row); 

} 
相關問題