首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法触发绑定事件

无法触发绑定事件
EN

Stack Overflow用户
提问于 2018-04-01 01:40:27
回答 2查看 57关注 0票数 2

我不明白为什么这个事件在用不同的方式多次尝试之后不会触发。我想要的是通过下拉菜单类别名称将我的事件绑定到第一个输入文本框的值的变化中。意思是当我从“类别列表”中选择"A或B或C“时,将更新为”第一输入“,事件将通过更改”第一输入“的值触发。

但我只能在“第一输入”的文本字段上按下一些键,但这不是我的要求。我的JSFIDDLE在这里,代码如下所示。

代码语言:javascript
复制
<head>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.0/jquery.min.js"></script>
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" />    </head>
    <body>
    <div class="col-md-3">  
                    <label>CategoryName</label>
                    <select class="form-control" name="cat_id" id="cat_id">
                        <option>A</option>
                        <option>B</option>
                        <option>C</option>
                    </select>
                </div>
      <div class="col-md-4">
            FIRST Input<input type="text" name="take" id="take" class="form-control" placeholder="Take Value"  />  
                        </div> 
      <div class="col-md-4">
          Give Output<input type="text" name="give" id="give" class="form-control" placeholder="Give Value" />  
     </div>                   
     <script>
                    $(document).ready(function(){  
                     $(function(){
                      $('body').on('click','#cat_id',function(){

                          var s     =$('#cat_id').val();
                          var n = s.lastIndexOf(",");
                          var s2 = s.substring(n + 1);
                          $('#take').val(s2);
                      })
                  });
                   $('#take').bind('input selectionchange propertychange',function(){  alert($('#take').val()); 
                   });
              });  
         </script>
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-04-01 02:25:26

首先,不推荐bind,我怀疑您之所以使用它只是因为无法让on工作。不能让它工作的原因是因为change事件并不仅仅是因为在框中进行了更改而触发的。只有在方框失去焦点后才触发。

因此,如果以编程方式更改框中的值,则change事件根本不会触发,因为它从一开始就没有焦点。

获得您想要的东西的方法也是以编程方式触发更改事件,就像这样(我继续用on替换了您的on,并将您的click事件按应有的方式更改为change事件):

代码语言:javascript
复制
        $(document).ready(function() {
          $(function() {
            $('#cat_id').on('change', function() {

              var s = $('#cat_id').val();
              var n = s.lastIndexOf(",");
              var s2 = s.substring(n + 1);

              $('#take').val(s2).trigger('change');
            })
          });

          $('#take').on('change', function(e) {
            $('#give').val($('#take').val());

          });

        });

要更清楚地了解change事件是如何工作的,请查看这个例子

票数 1
EN

Stack Overflow用户

发布于 2018-04-01 02:12:29

我不明白你到底想实现什么,如果你想绑定你选择的选项,你应该使用“更改”,而不是点击jquery代码链接+示例

如果您有兴趣绑定您的文本框,您应该使用select而不是单击。

链接+示例

更新

触发事件的一个小例子

代码语言:javascript
复制
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script>
$(document).ready(function () {

    var selectedOption = '';
  $("#optionSelect").change(function (e) {
        selectedOption = $( "#optionSelect option:selected" ).text();
        $("#testBtn").trigger("click");
   });

   $("#testBtn").click(function (e){
        $("#first_input").val(selectedOption);
   });

});
</script>
</head>
<body>

<select id="optionSelect">
    <option>A</option>
    <option>B</option>
    <option>C</option>
</select>

<button id='testBtn'>Test me</button>

<div id='test'></div>
<input type='text' id='first_input'/>
</body>
</html>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49594032

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档