How can I pass the chosen value on a modal-box to

2019-01-29 00:51发布

问题:

I've the code to initialize the modal-box:

<script>
var grid_modal_options = {
    height: 'auto',
    width: '80%',
    modal: true
};
function showProductsModalBox() {
    $("#products_modal_box").dialog(grid_modal_options);
    $("#products_modal_box").parent().appendTo('form:first');
}
</script>

<div id="products_modal_box" title="Products" style="display: none;">
  <div class="in">
    <div class="grid-12-12">
      <form id="products_modal_box_form" action="#" method="post">
    <table>
          <thead>
            <tr>
              <th>&nbsp;</th>
              <th>Product</th>
            </tr>
          </thead>
          <!-- Query for read mysql goes here (I skipped this line because it's not the main thing I'm gonna ask since it's run well) /-->
          <tbody>
          <?php
            //read the results
            while($fetch = mysqli_fetch_array($r)) {                
              print "<tr>";
              print "  <td><a href='#'>Choose</a></td>"; //--> How to return the value of $fetch[0]?
              print "  <td>" . $fetch[0] . "</td>"; //$fetch[0] == Product ID
              print "</tr>";
            }
          ?>
          </tbody>
        </table>
      </form>
    </div>
  </div>
</div>

And:

<input type='text' id='products_id_textbox' name='products_id_textbox' />
<a href='#' onclick='showProductsModalBox(); return false;'>Choose products</a>

The code succeeds to show the modal box. But how to return the "Product" chosen by the user to the textbox "products_id_textbox"? Thanks.

回答1:

add inline javascript:

<?php
    while($fetch = mysqli_fetch_array($r)) {                
        print "<tr>";
        print "  <td><a href=\"javascript:;\" onclick=\"$('#products_id_textbox').val('".$fetch[0]."');$('#products_modal_box').dialog('close');\">Choose</a></td>"; //--> How to return the value of $fetch[0]?
        print "  <td>" . $fetch[0] . "</td>"; //$fetch[0] == Product ID
        print "</tr>";
    }
?>


回答2:

Instead using inline JS, you can write so (or something like this);

// php
while($fetch = mysqli_fetch_array($r)) {                
    print "<tr>";
    print "  <td><a rel='dialog' data-id='{$fetch[0]}'>Choose</a></td>";
    print "  <td>{$fetch[0]}</td>";
    print "</tr>";
}

// js
$(document).ready(function(){
...
$("a[rel=dialog]").each(function(){
   var id = this.getAttribute("data-id");
   $('#products_id_textbox').val(id);
   $('#products_modal_box').dialog('close');
});