2015-04-23 3 views
1

Я сделал пример о , заменив входное значение, когда строка удалена, но не работает (это не статический пример).Проблема с заменой входного значения в массиве

<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

+0

Читайте очень внимательно в [jQuery doc] (https://api.jquery.com/next/), что '.next ('. should_destroy')' на самом деле. Он смотрит на следующий элемент sibling и возвращает что-то ТОЛЬКО, если этот самый следующий элемент соответствует селектору '.should_destroy'. Это часто не то, что люди хотят, или то, что люди ожидают, когда они его используют. Я не могу сказать из вашего кода, если это ваша проблема или нет, но это общий. – jfriend00

+0

Вы хотите удалить всю строку при нажатии ссылки удаления? –

+0

Да, я сделал это здесь https://github.com/sayayingod/REPLACING-VALUE-FROM-INPUT-WHEN-IS-DELETED/archive/master.zip, но я не только хочу удалить строку, но и я хотите изменить значение ввода на [email protected] в каждой удаленной строке. –

ответ

1

Хорошо я получил его, вы хотите изменить значение входного сигнала при удалении строки, так что это:

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 = ''; 

    var element_text2 = $(element).up('.contact').down('.should_change_value',0); 
    element_text2.className = 'should_change_value'; 
    element_text2.value = '[email protected]'; 

    if (should_destroy) { $(element).next('.should_destroy').value = 1;} 

    $(element).up('.contact').hide(); 
} 
+0

Огромное спасибо. Не знаю, как с этим бороться. –