大家好,我认识这个问题的人已经被问过几次了,但是我对这个问题感到困惑。 我有以下几行代码:
<tr>
<td>Nome Hw:</td>
<td><INPUT class="clickableElement" TYPE="TEXT" NAME="nomeHw" size="50" value="<?php echo $rowHWCFG['NOMEHARDWARE']; ?>" readonly></td>
<td> </td>
<td> </td>
<td>Quantità</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> </td>
<td> </td>
</tr>
Whit Jquery我已经使用“ .bind”函数在第一个输入上绑定了“ click事件”(不要介意选择器 .floatingMenuTable: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”的值,但无法获取名为“ quantitaHW”的第二个输入的值。因此,请有人可以帮助我编写正确的函数吗?预先谢谢你!
答案 0 :(得分:0)
我已经更改了一些php语句以在此代码段中运行。按您的期望,警报中现在显示值。
请在click函数中更正jquery选择器的类和id。
$('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>
<label for="quantitaHW">Quantità</label>
<input class="quantitaHW" id="quantitaHW" name="quantitaHW" type="text" value="text" />
</p>
答案 1 :(得分:0)
为每个输入,选择等提供一个它们都共享的类(例如.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>
<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>
答案 2 :(得分:0)
我使用followig指令解决了
// 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到B所需的所有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"