【问题标题】:jQuery copy textfield on clickjQuery问题
【发布时间】:2011-03-01 00:28:26
【问题描述】:

我正在使用 Jquery 库在单击时使用复选框将在一个文本字段中输入的文本复制到另一个文本字段。如下所示

<html>
<head>
    <script src="js/jquery.js" ></script>
</head>
<body>
    <form>
        <input type="text" name="startdate" id="startdate" value=""/>
        <input type="text" name="enddate" id="enddate" value=""/>
        <input type="checkbox" name="checker" id="checker" />
    </form>
    <script>
    $(document).ready(function(){
            $("input#checker").bind("click",function(o){
                if($("input#checker:checked").length){
                    $("#enddate").val($("#startdate").val());
                }else{
                    $("#enddate").val("");
                }
            });
        }
    );
    </script>
</body>
</html>

现在我希望默认选中复选框,以便在默认选中复选框时自动复制开始日期中输入的数据...那么在 jquery 脚本中应该调用什么事件?

请帮我解决这个问题...下面给出的解决方案对我不起作用...

【问题讨论】:

    标签: javascript-events jquery


    【解决方案1】:
    function copyDate() {
     if($("#checker").prop("checked")==true){  $("#enddate").val($("#startdate").val()); 
    
    } }
    
    $(function(){
     $("#startdate").keypress(copyDate).click(copyDate); 
    });
    

    【讨论】:

      【解决方案2】:

      您希望在发生更改时复制该值,因此您可以使用 keypress 事件:

      function copyDate() {
        if($("#checker").is(":checked")){
          $("#enddate").val($("#startdate").val());
        }
      }
      
      $(function(){
        $("#startdate").keypress(copyDate).click(copyDate);
      });
      

      【讨论】:

      • 如果我取消选中复选框并更改开始日期然后再次重新选中复选框怎么办?我做到了,但它没有复制到 enddate,请帮助
      • @OM:是的,您还需要click 上的事件来处理它。我更改了上面的代码。
      【解决方案3】:

      你的问题不是很清楚。在我看来,您希望在页面加载时选中复选框,并且开始日期也被复制到结束日期:

      $(document).ready(function() {
        $("#checker").attr("checked","checked");
        $("#enddate").val($("#startdate").val());
      });
      

      编辑:

      结合您的事件处理程序:

      $(document).ready(function() {
         function checker() {
             if ($("#checker").is(":checked"))
                $("#enddate").val($("#startdate").val());
             else
                $("#enddate").val("");
         }
      
         $("#checker")
           .click(checker)
           .attr("checked","checked");
      
         checker();
      });
      

      这看起来很复杂,但是 jQuery 有一个问题:当设置“checked”属性时,立即使用 .click() 触发事件处理程序将不起作用,因为 .is (":checked") 函数不会返回更改后的值(我不知道为什么,但就是这样)。

      【讨论】:

      • +1 为你的正确理解:) 但我需要解决方案以及我正在使用的功能,我的意思是你的解决方案和我的点击事件都必须是功能性的......
      • 我进行了更改。对其进行了测试,它似乎可以正常工作。见jsbin.com/itaga3/5
      【解决方案4】:

      首先,您有两个默认选中复选框的选项... 1) 从使用

      定义复选框的 html 中
      checked='checked'
      

      2) 来自 jquery 使用

      $(document).ready(function() { $("#checker").attr("checked","checked"); )};

      现在进入重点......上面'Guffa'已经提到过

      $("#startdate").keypress(function(){
      if($("#checker").is(":checked")){
        $("#enddate").val($("#startdate").val());
      }
      

      });

      【讨论】:

        【解决方案5】:

        怎么样:

        $("#startdate").change(function() {
          // code here
        });
        

        【讨论】:

        • 只有当复选框的状态发生变化时,此事件才会起作用,这不是真的吗?我的意思是我需要在刷新页面时将复选框的事件选为默认值..根据我的理解进行确认。 . 可能是我错了
        • 不,此事件将在每次“更改”时触发。对于默认选中的复选框,使用 HTML 属性 checked=checked
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-09-21
        • 1970-01-01
        • 2013-01-25
        • 2019-12-02
        • 2011-07-23
        • 2010-12-20
        • 2011-02-18
        相关资源
        最近更新 更多