jQuery onChange 只运行一次

Posted

技术标签:

【中文标题】jQuery onChange 只运行一次【英文标题】:jQuery onChange only running once 【发布时间】:2021-12-24 17:05:22 【问题描述】:

我在 Wordpress Woo 表单中有 jQuery 函数,它基本上基于下拉填充某些字段,但是 jQuery 只执行一次。 代码:

jQuery(document).ready(function() 
  // Your code in here
  jQuery(document).on('change', '#billing_complex_name', function() 
    myFunc();
  )

  function myFunc() 
    // your function code
    var complex_name = jQuery('#billing_complex_name').val();

    var suburb = jQuery('#billing_suburb').val();

    if (complex_name == 'eldogleneast') 
      jQuery("#billing_suburb").val('ELD');
      jQuery('#billing_postcode').val('0157');
     else if (complex_name == 'Reldoglen') 
      jQuery("#billing_suburb").val('LPN');
      jQuery('#billing_postcode').val('0133');
     else if (complex_name == 'eldin') 
      jQuery("#billing_suburb").val('STK');
      jQuery('#billing_postcode').val('2147');
      jQuery("#billing_complex_address").val('Lion St');
     else if (complex_name == 'elm') 
      jQuery("#billing_suburb").val('ELD');
      jQuery('#billing_postcode').val('0147');
      jQuery("#billing_complex_address").val('Lor Ave');
    
  
)

如何让它始终运行 onChange 而不仅仅是一次。

【问题讨论】:

请也添加您的 html 您如何调用方法? 添加您的 HTML 代码然后我们可以看到...您使用什么来更改事件,例如 selectradiocheckbox 你能详细说明'它只执行一次' @RaeeshAlam A Select 声明 @HowardE 在第一次从选择框中选择时,它将更改相关输入框的值,之后尝试不会发生任何变化 【参考方案1】:

如果第一次选择工作而第二次不工作,则需要在mouseenter 事件上reset value of select,就像在我的 sn-p 代码中一样。

对于staticdynamic 都不需要写document ready statement 选择更改。类似这样。

jQuery(document).on('change', 'select', function (e) // 做点什么 );

希望下面的sn-p对你有很大帮助。

function myFunc(getvalue) 
    var complex_name = getvalue;
    if (complex_name == 'eldogleneast') 
        jQuery("#billing_suburb").val('ELD');
        jQuery('#billing_postcode').val('0157');
     else if (complex_name == 'Reldoglen') 
        jQuery("#billing_suburb").val('LPN');
        jQuery('#billing_postcode').val('0133');
     else if (complex_name == 'eldin') 
        jQuery("#billing_suburb").val('STK');
        jQuery('#billing_postcode').val('2147');
        jQuery("#billing_complex_address").val('Lion St');
     else if (complex_name == 'elm') 
        jQuery("#billing_suburb").val('ELD');
        jQuery('#billing_postcode').val('0147');
        jQuery("#billing_complex_address").val('Lor Ave');
    

jQuery(document).on('change', '#billing_complex_name', function () 
    var getname = jQuery('#billing_complex_name').val();
    jQuery("#billing_suburb, #billing_postcode, #billing_complex_address").val('')// first reset
    myFunc(getname);
);

jQuery(document).on('mouseenter', '#billing_complex_name', function () 
    $(this).val(''); // need to reset after change 
);
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<select id="billing_complex_name">
    <option value="" selected>---</option>
    <option value="eldogleneast">eldogleneast</option>
    <option value="Reldoglen">Reldoglen</option>
    <option value="eldin">eldin</option>
    <option value="elm">elm</option>
</select>
<br><br>
<label>Suburb</label><br>
<input type="text" id="billing_suburb">
<br><br>
<label>Post Code</label><br>
<input type="text" id="billing_postcode">
<br><br>
<label>Address</label><br>
<input type="text" id="billing_complex_address">

【讨论】:

以上是关于jQuery onChange 只运行一次的主要内容,如果未能解决你的问题,请参考以下文章

如何从 TextInput(onChange 或 onTextChange)创建 rxjs Observable

select2 onchange 事件仅有效一次

Radio Input onChange 只触发一次?

jquery触发两次onchange事件

我的移动菜单 Jquery 脚本只运行一次

vue下拉框如何控制onblur和onchange