简体   繁体   English

在一个隐藏的输入jQuery中获取两个输入值

[英]Get two input values in one hidden input jQuery

I want to get two values first and last names in one hidden field with space between. 我希望在一个隐藏字段中获得两个值的名字和姓氏,其间有空格。 I tried with this code 我试过这个代码

 jQuery(document).ready(function($) { $('input[name="firstname"]').keyup(function() { $('input[name="fullname"]').val($(this).val()); }); }); jQuery(document).ready(function($) { $('input[name="lastname"]').keyup(function() { $('input[name="fullname"]').val($(this).val()); }); }); 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <input type="text" name="firstname" value=""> <input type="text" name="lasttname" value=""> <input type="hidden" name="fullname" value=""> 

It is not working how i want. 这不是我想要的工作方式。 It's showing only one value each time. 它每次只显示一个值。 Can anyone help me with this how can i get this work? 任何人都可以帮助我,我怎么能得到这项工作?

Thanks in advance. 提前致谢。

The issue is because you're overwriting the value of the hidden field on every key entry. 问题是因为您在每个键条目上覆盖隐藏字段的值。 To fix this you can use a single event handler on both inputs which concatenates the first and lastnames together. 要解决此问题,您可以在两个输入上使用单个事件处理程序,将第一个和最后一个名称连接在一起。 Try this: 试试这个:

 jQuery(function($) { var $firstname = $('input[name="firstname"]'); var $lastname = $('input[name="lastname"]'); var $fullname = $('input[name="fullname"]'); $firstname.add($lastname).keyup(function() { $fullname.val($firstname.val() + ' ' + $lastname.val()); }); }); 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <input type="text" name="firstname" value="" /> <input type="text" name="lastname" value="" /><br /><br /> <input type="text" name="fullname" value="" readonly="true" /> 

Note that I made the hidden field visible to make the behaviour clearer in the example. 请注意,我使隐藏字段可见,以使示例中的行为更清晰。

As of now you are overwriting the content of hidden input. 截至目前,您正在覆盖hidden输入的内容。 You need to create the fullname string and then update the hidden input. 您需要创建fullname字符串,然后更新hidden输入。

 jQuery(document).ready(function($) { $('input[name="firstname"], input[name="lastname"]').keyup(function() { var fn = $('input[name="firstname"]'), ln = $('input[name="lastname"]'); var name = fn.val() + ' ' + ln.val(); $('input[name="fullname"]').val(name) console.clear() console.log(name) }); }); 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <input type="text" name="firstname" value=""> <input type="text" name="lastname" value=""> <input type="hidden" name="fullname" value=""> 

  1. Initialize your variables with the jQuery objects to avoid repeated look over the DOM tree. 使用jQuery对象初始化变量,以避免重复查看DOM树。
  2. Concatenate the values to avoid losing the previously entered values. 连接值以避免丢失先前输入的值。
  3. The input which contains the lastName value, has a typo lasttname . 包含lastName值的输入有一个拼写错误的lasttname

 jQuery(document).ready(function($) { var $fn = $('input[name="fullname"]'); var $firstName = $('input[name="firstname"]'); var $lastName = $('input[name="lastname"]'); $firstName.keyup(function() { $fn.val($(this).val() + " " + $lastName.val()); }); $lastName.keyup(function() { $fn.val($firstName.val() + " " + $(this).val()); }); }); 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <input type="text" name="firstname" value=""> <input type="text" name="lastname" value=""> <input type="text" name="fullname" value=""> 

Store the first name is some variable 存储名字是一些变量

jQuery(document).ready(function($){
  $('input[name="firstname"]').keyup(function() {
     $('input[name="fullname"]').val($(this).val());
  });
  $('input[name="lastname"]').keyup(function() {
    var oldname = $('input[name="fullname"]').val(); //take firstname from hidden field
    $('input[name="fullname"]').val(oldname + ' '+$(this).val()); // appending the values
   });
});

Try something like this. 尝试这样的事情。 You don't need 2 document.ready and 2 different even handler for keyup 对于keyup,你不需要2个document.ready和2个不同的甚至处理程序

<input type="text" name="firstname" data-name value="">
<input type="text" name="lasttname" data-name value="">

<input type="hidden" name="fullname" value="">


jQuery(document).ready(function($){

    $('[data-name]').keyup(function() {

    $('input[name="fullname"]').val($('input[name="lastname"]').val() + " " + 
    $('input[name="firstname"]').val());

    });       

});

You need to make your code like given below: 您需要制作如下所示的代码:

<input type="text" name="firstname" value="">
<input type="text" name="lasttname" value="">

<input type="hidden" name="fullname" value="">


jQuery(document).ready(function($){
 $('input[name="firstname"]').keyup(function() {
    if($('input[name="lastname"]').val() != '')
    {
        var last_name = $('input[name="lastname"]').val();
        $('input[name="fullname"]').val($(this).val()+' '+last_name);            
    }
    else{
        $('input[name="fullname"]').val($(this).val());
    }
});
});
jQuery(document).ready(function($){
 $('input[name="lastname"]').keyup(function() {
    if($('input[name="firstname"]').val() != '')
    {
        var first_name = $('input[name="firstname"]').val();
        $('input[name="fullname"]').val($(this).val()+' '+first_name);            
    }
    else{
        $('input[name="fullname"]').val($(this).val());
    }
});
});

Simple it is 很简单

jQuery(document).ready(function($){
 $('input[name="firstname"], input[name="lastname"]').keyup(function() {
    $('input[name="fullname"]').val($('input[name="firstname"]').val() + ' ' + $('input[name="lastname"]').val());
});
});

It shows only the one value each time because you overwrite the previous value of fullname every time . 它每次只显示一个值,因为您每次都会覆盖以前的全名值。

One solution is to add specific id's for firstName and lastName and during keyup you can have something like 一种解决方案是为firstNamelastName添加特定的id,在keyup你可以有类似的东西

$('input[name="lastname"]').keyup(function() {
    var value = $("#firstNameID").val() + $("#lastNameID").val();
     $('input[name="fullname"]').val(value);
 });

i didnt test it but this is the idea. 我没有测试它,但这是个主意。

Don't use two ready functions, use one, and put both event listeners inside that one. 不要使用两个ready函数,使用一个,并将两个事件监听器放在那个函数中。 Your problem is that your not updating the hidden field with both the first name and last name, you're instead overwriting the firstname with the last name. 你的问题是,你不能同时与姓氏和名字,你是不是覆盖更新的隐藏字段firstname与姓氏。 Thus you must append the last name to the first name and vice versa: 因此,您必须将姓氏附加到名字,反之亦然:

Take a look at the fiddle bellow for a working example. 看一下小提琴波纹管的工作实例。 (I have made the hidden field text just so you can see the output) (我已经制作了隐藏的字段text ,因此您可以看到输出)

 jQuery(document).ready(function($) { $('input[name="firstname"]').keyup(function() { $('input[name="fullname"]').val($(this).val() +" " +$('input[name="lasttname"]').val()); }); $('input[name="lasttname"]').keyup(function() { $('input[name="fullname"]').val($('input[name="firstname"]').val() + " " + $(this).val()); }); }); 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <input type="text" name="firstname" value="" /> <input type="text" name="lasttname" value="" /> <input type="text" name="fullname" value="" /> 

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM