JQUERY $(this).next issue



大家好,我知道这个问题已经被问到了几次,但是我遇到了这个问题。我有以下代码行:

<tr>
                <td>Nome Hw:</td>
                <td><INPUT class="clickableElement" TYPE="TEXT" NAME="nomeHw" size="50" value="<?php echo $rowHWCFG['NOMEHARDWARE']; ?>" readonly></td>
                <td>&nbsp;</td>
                <td>&nbsp;</td>
                <td>Quantit&agrave;</td>
                <td class="hardwareQuantity"><INPUT TYPE="TEXT" NAME="versione" size="20" value="<?php echo $rowHWCFG['QUANTITAHARDWARE']; ?>" readonly></td>
                <td >Valida dal</td>
                <td><INPUT TYPE="TEXT" NAME="validaDalHw" size="15" value="<?php echo $rowHWCFG['VALIDADALHW']; ?>" readonly>
                </td>
                <td >Valida al</td>
                <td><INPUT TYPE="TEXT" NAME="validaAlHw" size="15" value="<?php echo $rowHWCFG['VALIDAALHW']; ?>" readonly></td>
                <td>&nbsp;</td>
                <td>&nbsp;</td>
            </tr>

whit jQuery我使用了" .bind"函数在第一个输入上绑定"单击事件"(不要介意选择器 .floingmenutable:eq(2)

$('.floatingMenuTable:eq(2) input.clickableElement').bind("click", function() {
                    var nome_HW = $(this).val();
                    var quantita_HW = $(this).parent().find('.versione').val();
                    alert("Nome Hw:" + nome_HW + " Quantita:" + quantita_HW);
                    //showEditDetailItemMenu(this,'edit',nome_HW,quantita_HW);
            });

使用此代码我可以获得" nome_hw"的值,但是它不起作用以获取名为" partititahw"的第二个输入的值。那么请有人可以帮我写正确的功能吗?预先感谢您!

我已经改变了一些php语句以在此片段中运行。现在,在您预期的时刻显示在警报中。

请更正单击功能中的类和ID的jQuery选择器。

$('input').bind("click", function() {
                    var nome_HW = $(this).val();
                    var quantita_HW = $(this).parent().find('#nomeHw').val();
                    alert("Nome Hw:" + nome_HW + " Quantita:" + quantita_HW);
                    //showEditDetailItemMenu(this,'edit',nome_HW,quantita_HW);
            });
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<p>
              <label for="nomeHw">Nome HW:</label>
              <select id="nomeHw"  name="nomeHw" onchange="" required>
              <option>1</option>
              </select>&nbsp;&nbsp;
              <label for="quantitaHW">Quantità</label>
              <input class="quantitaHW" id="quantitaHW" name="quantitaHW" type="text" value="text" /> &nbsp;&nbsp;
            </p>

给出每个输入,选择等。它们都共享的类(例如.control)。将更改事件委托给<form>标签(您应该有一个)(例如#main)。 .map()值。


/*
When a user enters or changes any value of any .control...
an array of numbers and strings is returned.
*/
$('#main').on("change", function(event) {
  var arr = $('.control').map(function(idx, obj) {
    return Number($(this).val()) || $(this).val();
  });
  console.log(JSON.stringify(arr.toArray()));
  return arr;
});
<form id='main'>
  <fieldset>
    <legend>HW</legend>
    <label for="nameHW">Name: </label>
    <select id="nameHW" name="nameHW" class='control' required>
      <option value=''>Pick</option>
      <option value='H'>H</option>
      <option value='W'>W</option>
      <option value='HW'>HW</option>
    </select> &nbsp;&nbsp;
    <label for="qtyHW">Quantity: </label>
    <input id="qtyHW" name="qtyHW" class='control' type="number" value="0" min='0' max='99'>
  </fieldset>
</form>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

i使用lasterig指令解决:

// Edit the Hw Config
$('.floatingMenuTable:eq(2) input.clickableElement').bind("click", function() 
{
  var nome_HW = $(this).val();
  var quantita_HW = $(this).parent().siblings('td.hardwareQuantity').find('input').val();
  alert("Nome Hw:" + nome_HW + " Quantita:" + quantita_HW);
});

我从经验中可以提出的建议是在纸上绘制元素$(this)点击,并创建目标元素绘制从A到A的所有DOM元素。因此,在我的示例中:

$(this) -> click on the input field with name attribute: "nomeHw" and with class: "clickableElement"
parent() -> Move inside the Dom selecting the "td" element that contains the input field "nomeHw"
siblings('td.hardwareQuantity') -> move to the sibling with classname "hardwareQuantity" 
find('input') -> find the input close to that td with classname "hardwareQuantity"

最新更新