簡體   English   中英

jQuery - 將數組值設置為具有相同名稱的輸入

[英]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&hellip; 
             <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&hellip; <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&hellip; <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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM