[英]jQuery .val() not setting value
$('.remove-member').click(function () {
var toRemove = $(this).parent().text().slice(0, -1);
var members = $(this).parent().siblings('input[name=group-members]').val().split(' ');
$(this).parent().remove();
removeElement(members, toRemove);
members = members.join(' ');
$(this).parent().siblings('input[name=group-members]').val(members);
});
在上面的,一切正常,直到最后一行(其值設置為包含在字符串members
)。 在控制台中顯示變量members
將顯示預期的字符串,表示$(this).parent().siblings('input[name=group-members]')
正在正確遍歷DOM。 我的HTML如下:
<form method='POST' action='action.php'>
<input type='text' value='[ GROUP NAME GOES HERE ]' name='group_name' />
<input type='text' name='add-member' />
<div class='group_member'>name01<span class='remove-member'>x</span>
</div>
<div class='group_member'>name02<span class='remove-member'>x</span>
</div>
<div class='group_member'>name03<span class='remove-member'>x</span>
</div>
<div class='group_member'>name04<span class='remove-member'>x</span>
</div>
<input type='text' value='name01 name02 name03 name04' name='group-members' />
<input type='Submit' value='Update' />
</form>
由於頁面的性質,不能直接引用$('input[name=group-members]')
。
removeElement函數:
function removeElement(arr) {
var what, a = arguments,
L = a.length,
ax;
while (L > 1 && arr.length) {
what = a[--L];
while ((ax = arr.indexOf(what)) !== -1) {
arr.splice(ax, 1);
}
}
return arr;
}
$('.remove-member').click(function () {
var toRemove = $(this).parent().text().slice(0, -1);
var members = $(this).parent().siblings('input[name=group-members]').val().split(' ');
$(this).parent().remove();
removeElement(members, toRemove);
members = members.join(' ');
$(this).parent().siblings('input[name=group-members]').val(members);
});
您正在刪除父級。
$(this).parent().remove();
所以打電話。
$(this).parent().siblings('input[name=group-members]').val(members);
應該不再工作了,因為您剛剛殺死了包含的DOM節點。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.