1 回答
TA贡献1871条经验 获得超13个赞
您在树上走得还不够远,无法找到课程。你有:
var quantity = $(".radio_class").parent().find(".quantity_class").val();
这让你到父<td>你正在寻找的元素是这个的兄弟:
<td class="quantity_class" >...
你想要做的是向上移动一个元素(表格行),然后从那里找到你正在寻找的类,所以使用closest(). 请注意,.quantity_class它没有值,因此您必须在表格单元格中获取文本:
var quantity = $(".radio_class").closest('tr').find(".quantity_class").text();
此外,我没有看到任何带有max属性的标记或任何带有名称的标记split_quantity。
编辑- 根据与用户的对话,发现需要进行一些更改。split_quantity首先,需要识别持有的表格,以便它可以在更宏大的标记中定位:
<table id="split_quantity_id">
<tr>
<td><label for="new_quantity">Enter New Quantity</label></td>
<td><input type="number" id="split_quantity" name="split_quantity" min="1" max="6"></td>
<td><button type="submit" value="Save" name="submit_action">Submit</button></td>
<td><button type="submit" value="Cancel" name="submit_action">Cancel</button></td>
</tr>
</table>
然后我们摆脱了onclick="handleClick(this)内联 JavaScript,转而让 jQuery 处理点击事件。最后我们重构了函数:
$(function() {
var firstRadioValue = 0;
firstRadioValue = $("input[name='line_item']:checked").closest('tr').find('.quantity_class').text();
$('input[name="split_quantity"]').attr('max', firstRadioValue);
var quantity = $(".radio_class").closest('tr').find(".quantity_class").text();
console.log(quantity);
$('table').delegate('.line_item', 'click', function(){
currentRadioValue = $(this).closest('tr').find('.quantity_class').text();
console.log(currentRadioValue);
$('#split_quantity_id').find('[name="split_quantity"]').attr('max', currentRadioValue);
});
});
注意:还发现 OP 使用的是 Smarty 2,它是使用旧版本 jQuery 的旧版本 Smarty,因此.delegate()使用 代替on().
添加回答
举报