2014-01-14 2 views
0

Я пытался обновить значение входа в следующий тд, но без успеха ..не в состоянии изменить значение входного сигнала на изменение выбора

этот код создается «новый пункт» кнопка, которая запускает JavaScript:

<tr class="item1"><!-- contenido de tabla --> 
    <td> 
     <select name="postArrayProducto[]"> 
     <option>Suave</option> 
      <option>Fuerte</option> 
     <option>Merken</option> 
     </select> 
    </td> 
    <td> 
     <select name="postArrayFormato[]" onchange="cambiarUnidades(this.value)"> 
      <option value="frascoG">Frasco 370g</option> 
     <option value="frascoC">Frasco 220g</option> 
     <option value="sachet">Sachet 200g</option> 
     <option value="doypack">Doy/Pack 250g</option> 
     </select> 
    </td> 
    <td> 
     <input type="text" name="postArrayUnidades[]" size="1" maxlength="3" readonly value="20"> unidades 
    </td> 
    <td> 
     <input type="text" name="postArrayCajas[]" size="1" maxlength="3"> cajas 
    </td> 
</tr><!-- fin contenido tabla --> 

так, когда cambiarUnidades(this.value) запускается я хочу изменить postArrayUnidades[]

The JS:

<script type="text/javascript"> 
    $(window).load(function(){ 
     cambiarUnidades = function(el) { 
      if(el == "frascoG"){ 
       $(el).parents('td').next('td').find('input').val('99');   
      } 
      if(el == "frascoC"){ 
       $(el).parent('tr').find('td:nth-child(3)').find('input').val('99');    
      } 
      if(el == "sachet"){ 
       $(el).parent('tr').find('td:nth-child(3)').find('input').value='99'; 
      } 
      if(el == "doypack"){ 
       $(el).parent().next('td').find('input').val('99'); 
      }  
     } 
    }); 
</script> 

Я пробовал все это и не работал, я не смог изменить входное значение: (пожалуйста, помогите!

ответ

2

скрипку:

http://jsfiddle.net/gM2vX/2/

HTML:

<table> 
    <tr class="item1"><!-- contenido de tabla --> 
     <td> 
      <select name="postArrayProducto[]"> 
       <option>Suave</option> 
       <option>Fuerte</option> 
       <option>Merken</option> 
      </select> 
     </td> 
     <td> 
      <select name="postArrayFormato[]" id="test"> 
       <option value="frascoG">Frasco 370g</option> 
       <option value="frascoC">Frasco 220g</option> 
       <option value="sachet">Sachet 200g</option> 
       <option value="doypack">Doy/Pack 250g</option> 
      </select> 
     </td> 
     <td> 
      <input type="text" name="postArrayUnidades[]" size="1" maxlength="3" readonly value="20"/> unidades 
     </td> 
     <td> 
      <input type="text" name="postArrayCajas[]" size="1" maxlength="3"> cajas 
     </td> 
    </tr> 
</table><!-- fin contenido tabla --> 

JQuery:

$(function(){ 
    $("body").on("change","#test",function(){ 
     $(this).parent().next().find("input").val("99"); 
    }); 

});

вместо тела вы можете иметь некоторый div, который не динамически загружается через ajax. это повышает производительность. он оленья кожа идти в поисках элемента из уровня документа, вместо этого он проверяет от элемента, указанного как я сделал (тело)

+1

Хорошее решение - это устраняет встроенный JavaScript, который всегда хорошо, чтобы удалить +1 – gibberish

+1

Я вижу странную вещь с jquery, пока я отвечал на этот вопрос. перейдите по этой ссылке, если вы хотите узнать об этом - http: // stackoverflow.com/questions/21122266/weird-jquery-functional-on-missing-table-tags-around-tr –

+0

спасибо !!!!!! – gepex

0

вы передаете функцию Значение выбора (OnChange = «cambiarUnidades (this.value)»), таким образом вы не можете использовать ничего, как $ (el) .parents ('td') .... потому что el - это значение, а не объект.

поэтому сначала следует изменить OnChange к cambiarUnidades (это)

, то вы должны использовать $ (эл) .val() == ... в случае заявления.

следующая вещь, что родитель («тр») не прав, потому что родитель() не будет идти до 2-х уровней, так что вы должны использовать родителей («тр»)

так один строка будет выглядеть так:

if ($(el).val() == "frascoC") { 
    $(el).parents('tr').find('td:nth-child(3)').find('input').val('99');    
} 

еще одна вещь заключается в том, что вы должны обернуть элемент TR в TABLE, чтобы он работал.

(очевидно, есть и другие решения, я попытался указать на неправильные части вашего кода, чтобы не написать еще одно решение)

Смежные вопросы