Я сделал пример о , заменив входное значение, когда строка удалена, но не работает (это не статический пример).Проблема с заменой входного значения в массиве
<script src="./edit_files/prototype.js" type="text/javascript"></script>
<script src="./edit_files/application.js" type="text/javascript"></script>
<div class="contact">
<table border="0">
<tr>
<td><select class="position_id" id="obj_client_contact_attributes__position_id" name="obj_client[contact_attributes][][position_id]"><option value="1" selected="selected">INTELIGENT</option><option value="2">OTHER</option></select></td>
<td><input class="should_change_value" id="obj_client_contact_attributes__phone_mail" name="obj_client[contact_attributes][][phone_mail]" type="text" value="[email protected]"/></td>
<td>
<a href="#" onclick="mark_for_destroy_contact(this,true); return false;">DELETE</a>
<input id="obj_client_contact_attributes__id" name="obj_client[contact_attributes][][id]" type="hidden" value="16594"/>
<input class="should_destroy" id="obj_client_contact_attributes__should_destroy" name="obj_client[contact_attributes][][should_destroy]" type="hidden"/>
</td>
</tr>
</table>
</div>
<div class="contact">
<table border="0">
<tr>
<td><select class="position_id" id="obj_client_contact_attributes__position_id" name="obj_client[contact_attributes][][position_id]"><option value="1" selected="selected">INTELIGENT</option><option value="2">OTHER</option></select></td>
<td><input class="should_change_value" id="obj_client_contact_attributes__phone_mail" name="obj_client[contact_attributes][][phone_mail]" type="text" value="ONLY THE INPUT WILL BE [email protected] IF I CLICK ON DELETE"/></td>
<td>
<a href="#" onclick="mark_for_destroy_contact(this,true); return false;">DELETE</a>
<input id="obj_client_contact_attributes__id" name="obj_client[contact_attributes][][id]" type="hidden" value="16594"/>
<input class="should_destroy" id="obj_client_contact_attributes__should_destroy" name="obj_client[contact_attributes][][should_destroy]" type="hidden"/>
</td>
</tr>
</table>
</div>
Вот application.js файл:
function mark_for_destroy_contact(element,should_destroy,should_change_value) {
var element_text = $(element).up('.contact').down('.position_id',0);
element_text.className = 'position_id';
element_text.value = '';
if (should_destroy) {
$(element).next('.should_destroy').value = 1;
}
$(element).up('.contact').hide();
}
Я попробовал этот код, но работает только если удалить первую строку.
function mark_for_destroy_contact(element,should_destroy,should_change_value) {
var element_text = $(element).up('.contact').down('.position_id',0);
element_text.className = 'position_id';
element_text.value = '';
$('should_change_value').update("[email protected]");
if (should_destroy) {
$(element).next('.should_destroy').value = 1;
}
$(element).up('.contact').hide();
}
Here is the live example in jsfiddle
Here is the example download on Github but is not replacing the input value correctly
Читайте очень внимательно в [jQuery doc] (https://api.jquery.com/next/), что '.next ('. should_destroy')' на самом деле. Он смотрит на следующий элемент sibling и возвращает что-то ТОЛЬКО, если этот самый следующий элемент соответствует селектору '.should_destroy'. Это часто не то, что люди хотят, или то, что люди ожидают, когда они его используют. Я не могу сказать из вашего кода, если это ваша проблема или нет, но это общий. – jfriend00
Вы хотите удалить всю строку при нажатии ссылки удаления? –
Да, я сделал это здесь https://github.com/sayayingod/REPLACING-VALUE-FROM-INPUT-WHEN-IS-DELETED/archive/master.zip, но я не только хочу удалить строку, но и я хотите изменить значение ввода на [email protected] в каждой удаленной строке. –