[英]jQuery - set array values to the input with the same name
我試圖將數組值設置為名為attachments[]
的輸入字段
我有數組存儲在 js 變量attachArray
我嘗試過的是,
$('[name="attachments"]').attr('value', attachArray);
或者
$('[name="attachments"]').val(attachArray);
但是像這樣在控制器中獲取空attachments
,
array(1) { ["attachments"]=> array(1) { [0]=> string(0) "" } }
我做錯了什么?
編輯
<div class="col-md-4">
<div class="form-group ticket-align">
<label>Attachment</label>
<label class="btn btn-primary" data-toggle="modal" data-target="#t-attachment-modal">
Browse…
<input type="hidden" name="attachments[]">
</label>
<span id="fileList"></span>
<span class="error" id="error-atachments" style='display: none;'></span>
</div>
</div>
因為是隱藏輸入,所以
任何一個:-
$('[name=attachments]').val(attachArray);
或者
$('input:hidden[name=attachments]').val(attachArray);
將工作。
注意:- 使用反斜杠(使用\\\\
(無空格)轉義內部括號)。
據我了解,您希望將 JavaScript 數組的內容傳播到 PHP 將其解釋為數組的多個字段。
我將輸入從hidden
更改為text
只是為了使它更清晰一點,因此您可以看到值的外觀。 不要忘記在您的代碼中撤消此操作。
const attachArray = [ 'val1', 'val2', ]; const attachments = $('[name="attachments[]"]'); for ( let i = 0; i < attachments.length; i += 1 ) { $( attachments[ i ] ).val( attachArray[ i ] ); }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <div class="col-md-4"> <div class="form-group ticket-align"> <label>Attachment</label> <label class="btn btn-primary" data-toggle="modal" data-target="#t-attachment-modal"> Browse… <br> <input type="text" name="attachments[]"><br> <input type="text" name="attachments[]"> </label> <span id="fileList"></span> <span class="error" id="error-atachments" style='display: none;'></span> </div> </div>
但這是很多代碼要做。 我認為將數組作為 JSON 發送並使用 PHP json_decode
將其轉換回數組可能更容易,如下所示:
const attachArray = [ 'val1', 'val2', ]; $('[name="attachments"]').val( JSON.stringify( attachArray ) );
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <div class="col-md-4"> <div class="form-group ticket-align"> <label>Attachment</label> <label class="btn btn-primary" data-toggle="modal" data-target="#t-attachment-modal"> Browse… <br> <input type="text" name="attachments"> </label> <span id="fileList"></span> <span class="error" id="error-atachments" style='display: none;'></span> </div> </div>
並做類似的事情
$attachments = json_decode( $_POST[ 'attachments' ] );
您有名稱為attachments[]
輸入字段,所以試試這個
$('[name="attachments[]"]').val(attachArray);
提及隱藏字段的 id 並且您正在通過表單發送數組,因此使用方括號聲明隱藏字段名稱,如下所示。
<input type="text" name="attachments[]" id="attachments">
並使用 jquery val()
方法綁定您的數組。
$('#attachments').val(attachArray);
供以后參考:-)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.