jquery更改事件修改两个不同的id和值

时间:2013-12-22 16:44:20

标签: javascript jquery

我有那段代码:

<script type="text/javascript">
$('#m_pair').on('change', function() {              
    if ($(this).val() == 'pair'){ 
        $ilosc_pair = $('#quantity_wanted').val();
        $ilosc_pair = $ilosc_pair * 2;
        $("#quantity_wanted").val($ilosc_pair).change();
        $("#group_5").val("35").change();   
    } else if ($(this).val() == 'single'){ 
        $("#group_5").val("34").change(); 
    }
});
</script> 

问题是我的代码只更改了一个ID:quantity_wantedgroup_5。我不能修改那个单一事件中的两个元素 - 只有一个。 有一秒钟我在网页上看到quantity_wanted改变了值(乘以* 2),但是在第二次回到之前的值之后。 如果我切线:

`$("#quantity_wanted").val($ilosc_pair).change();` 

`$("#group_5").val("35").change();`   

代码工作正常,他们都不想工作。

当一个html下拉列表发生更改时,事件开始,并且应该更改一个文本字段和一个(另一个)下拉列表。

编辑:

<form id="form3" name="form3" method="post" action="">
   <label for="Heading">Heading</label>
   <select name="m_heading" id="m_heading">
      <option value="pencil_pleat" selected="selected">pencil pleat</option>
      <option value="tab_tops">tab tops</option>
      <option value="gathered">gathered </option>
   </select>
</form>
<form id="form4" name="form4" method="post" action="">
   <label for="Type">Type</label>
   <select name="m_pair" id="m_pair">
      <option value="single" selected="1">single</option>
      <option value="pair">pair</option>
   </select>
</form>
<form method="post" action="{$customizationFormTarget}" enctype="multipart/form-data" id="customizationForm" class="clearfix">
   <p class="infoCustomizable">
      {l s='After saving your customized product, remember to add it to your cart.'}
   </p>
   {if $product->text_fields|intval}
   <div class="customizableProductsText">
      <h3>{l s='Please enter dimensions for price calculations:'}</h3>
      <ul id="text_fields">
         {counter start=0 assign='customizationField'}
         {foreach from=$customizationFields item='field' name='customizationFields'}
         {if $field.type == 1}
         <li class="customizationUploadLine{if $field.required} required{/if}">
            <label for ="textField{$customizationField}">{assign var='key' value='textFields_'|cat:$product->id|cat:'_'|cat:$field.id_customization_field} {if !empty($field.name)}{$field.name}{/if}{if $field.required}<sup>*</sup>{/if}</label>
            <textarea name="textField{$field.id_customization_field}" id="textField{$customizationField}" rows="1" cols="40" class="customization_block_input">{if isset($textFields.$key)}{$textFields.$key|stripslashes}{/if}</textarea>
         </li>
         {counter}
         {/if}
         {/foreach}
      </ul>
   </div>
   {/if}
   <p id="customizedDatas">
      <input type="hidden" name="quantityBackup" id="quantityBackup" value="" />
      <input type="hidden" name="submitCustomizedDatas" value="1" />
      <input type="button" class="button" value="{l s='Save'}" onclick="javascript:saveCustomization()" />
      <span id="ajax-loader" style="display:none"><img src="{$img_ps_dir}loader.gif" alt="loader" /></span>
   </p>
</form>
<script type="text/javascript">
   $('#m_heading').on('change', function() {
   if ($(this).val() == 'pencil_pleat'){ $("#group_1").val("1").change(); }
   else if ($(this).val() == 'tab_tops'){ $("#group_1").val("2").change(); }
   else if ($(this).val() == 'gathered'){ $("#group_1").val("3").change(); }
   });

</script> 
<script type="text/javascript">
   $('#m_pair').on('change', function() {               
   if ($(this).val() == 'pair'){ 
   $ilosc_pair = $('#quantity_wanted').val();
   $ilosc_pair = $ilosc_pair * 2;
   $("#quantity_wanted").val($ilosc_pair).change();
   $("#group_5").val("35").change();   
   //           alert("Your quantity has been doubled and your order marked as pair");
   }
   else if ($(this).val() == 'single'){ $("#group_5").val("34").change(); }
   });

</script>

编辑:

@John S是的,有一个问题。我现在还没有找到它,但在某个地方有另一个evend处理程序将值改回原来的状态。我只是不明白为什么如果我使用一个.change()它被覆盖,而我使用2x .change()没有。无论如何,谢谢你们的帮助,并跟踪我正确的方向:)

0 个答案:

没有答案