首页 > 解决方案 > 为什么我在 JS 中的 focus() 方法不能作为 onfocus 事件处理?

问题描述

大教堂:

<input id="bankCardInput" type="text"  onfocus="console.log('inputBox is focused');" v-model="AcctNo" v-change="CardBinQry2()" v-blur="CardBinQry()"  maxlength="19" style="width: 70%;">

JS:

$scope.CardBinQry2 = function () {
    if (!$scope.AcctNo) {
        return;
    }
    var params = {
        "AcctNo": $scope.AcctNo
    };
    if ($scope.AcctNo.length < 16) {
        $scope.BankExist = false;
        $scope.BankName = '';
        return;
    }
    $remote.post("BankAmericardQuery.do", params, function (data) {
        if (data.resultMap.BankName.indexOf('银行') > -1) {
            $scope.BankName = data.resultMap.BankName;
            $scope.BankExist = true;
        }
        setTimeout(function () {
            var input = document.getElementById('bankCardInput');
            input.focus();
        },1000)
    },function (error) {
        if (error.jsonError[0]._exceptionMessageCode == "not.supported.by.the.bank.card")
            $scope.BankName = "卡不支持";
    })
};

每次, CardBinQry2() 方法运行成功,我想查看日志'inputBox is focus',但没有。有人告诉我为什么吗?

标签: javascriptfocusonfocus

解决方案


你可以把它变成一个函数

  setTimeout(function () {
    callback()
  },1000)
  function callback() {
    var input = document.getElementById('bankCardInput');
    input.focus();
  }

推荐阅读