我正在尝试使用jquery的父母/兄弟姐妹找到特定的输入元素,但我似乎无法做到这一点。
我有以下HTML:
<div id="ExtrasOptions">
<div class="selectItem">
<div class="selectPrice"><span>Qty: <input name="qty" type="text" value="0" maxlength="2" id="qty" class="AccessoryQuantity" /></span></div>
<div class="selectIt"><span><input name="extraselected" type="checkbox" id="extraselected" value="9" /><label for="extrasID">Add this</label></span></div>
</div>
<div class="selectItem">
<div class="selectPrice"><span>Qty: <input name="qty2" type="text" value="0" maxlength="2" id="qty2" class="AccessoryQuantity" /></span></div>
<div class="selectIt"><span><input name="extraselected2" type="checkbox" id="extraselected2" value="9" /><label for="extrasID">Add this</label></span></div>
</div>
</div>
Q1:当有人选中复选框时,我希望同一div.selectItem中的文本框中放入一个“1”。如果他们取消选中该复选框,我希望删除该值。
Q2:我还希望检查复选框是否在文本框中输入了值,如果文本框为空则取消选中。
感谢您的帮助。
答案 0 :(得分:4)
这样的事情应该有效。 (没有测试精确的语法,但算法很稳定。)
// Bind an event to each of your checkboxes, for when they are clicked
$("input[type=checkbox]").click(function() {
if ($(this).attr("checked")) {
// The checkbox is checked, so find the associated text input and change its value
$(this).parents(".selectItem").find("input[type=text]").val("1");
} else {
// The checkbox is unchecked, so find the associated text input and remove its value
$(this).parents(".selectItem").find("input[type=text]").val("");
}
});
// Bind an event to each of your text inputs, for when they have text entered into them
$("input[type=text]").keypress(function() {
if ($(this).val() != "")) {
// There is something in the text input box, so check the associated checkbox
$(this).parents(".selectItem").find("input[type=checkbox]").attr("checked","checked");
} else {
// There is nothing in the text input box, so uncheck the associated checkbox
$(this).parents(".selectItem").find("input[type=checkbox]").attr("checked","");
}
});
答案 1 :(得分:1)
这适用于您的标记(已测试):
$(document).ready(function() {
$('input:checkbox').change(function() {
if($(this).is(':checked')) {
$(this).val('1');
} else {
$(this).val('');
}
});
$('input[type=text]').keyup(function() {
if($(this).val() != "") {
$(this).parent()
.parent()
.next('.selectIt')
.find('span > input:checkbox')
.attr('checked','checked')
.val('1');
} else {
$(this).parent()
.parent()
.next('.selectIt')
.find('span > input:checkbox')
.removeAttr('checked')
.val('');
}
});
});