使用jQuery绑定将数据从一个输入复制到另一个

时间:2019-02-20 12:52:17

标签: php jquery html forms

我在表单上有两个字段,需要填写相同的数据。

当您在此处输入时:

<?php $value = (isset($lead) ? $lead->name : ''); ?>
        <?php echo render_input('name','lead_add_edit_name',$value); ?>

这是我们更新的相同信息:

<?php $value = (isset($lead) ? $lead->company : ''); ?>
        <?php echo render_input('company','lead_company',$value); ?>

我找到了这段代码,但是,我无法正常工作:

    $("#thing1").bind('input', function () { var stt = $(this).val(); $("#thing2").val(stt); });

有什么想法吗? 谢谢

1 个答案:

答案 0 :(得分:1)

您需要在表单字段上绑定正确的DOM事件。

首先,在这种情况下,请确定要复制数据的两个字段(起点和终点)。在您的情况下,您似乎正在使用一种PHP框架(一个wordpress主题?),该框架使用render_input函数来呈现表单输入字段。

假设该函数的第一个参数表示字段名称,则可以通过以下选择器选择字段:

$("input[name=name]")
$("input[name=company]")

通过了解这一点,您现在将需要在更改值时在第一个字段上拦截DOM事件,因此正确的事件应为'change'。 正如@Rahul所说,正确的侦听器将是'on',不再是'bind'。

$("input[name=name]").on('change',function(){...});

最后,当事件触发时,您只需要将元素的值复制到另一个元素即可。

$("input[name=name]").on('change',function(){
    var fieldValue = $(this).val();
    $("input[name=company]").val(fieldValue);
});

最后,就像@Quasimodo的克隆所说的那样,最终,将所有代码封装在文档就绪的触发函数中,因此您可以确保在表单字段在页面中实际可用之后将执行该代码。

$(document).ready(function(){
    $("input[name=name]").on('change',function(){
        var fieldValue = $(this).val();
        $("input[name=company]").val(fieldValue);
    });
});