如果第一个最初为空,则在 keyup 的 2 个输入上使用相同的值

use same value on 2 inputs on keyup if first one is originaly empty

我在 Name 和 Company 表单中有 2 个字段,我希望 Name 在键入时动态获取 Company 值(仅当您开始输入 Company 时 Name 为空),但我没有找到最佳方法实现这一目标。

例如,HTML 是:

<form>
    ...
    <input type="text" id="Name" name="Name" value="">
    <input type="text" id="Company" name="Name" value="">
    ...
</form>

我试过了:

$('#Company').on('keyup', function(){
    var str = $('#Company').val();
    str = str.substring(0, str.length - 1);

    if($('#Name').val().length <= 0 || $('#Name').val() == str){
        $('#Name').val($('#Company').val());
    }
});

它在某种程度上起作用,如果您输入得太快,它会停止假设 #Name#Company 在上一个 keyup

之前具有相同的值

我也考虑过在公司 blur 上做,它可能会奏效,但这不是我想要实现的用户体验。

使用 Angular.js 或类似的东西可能会更容易,但现在不能使用它。

像这样,添加一个class,在名称字段输入时删除,否则从公司字段复制第一个字符后长度检查将失败。

$('#Name').addClass('empty').on('input', function() {
    $(this).toggleClass('empty', this.value.trim().length === 0);
});

$('#Company').on('input', function() {
    $('#Name.empty').val(this.value);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<form>
    Name : <input type="text" id="Name" name="Name" value=""><br>
    Comp : <input type="text" id="Company" name="Name" value="">
</form>