JSFiddle - React, Tailwind, and code Playground

HTML

<input id="in" value="1047527295416280">
<button onclick="document.getElementById('out').innerHTML=isVampire(document.getElementById('in').value);">OK</button>
Output: <span id="out"></span>

JavaScript

var V, v, isVmp, digits, len;

function isVampire(numberString) {
  V = numberString;
  if (V.length < 4 || V.length % 2 == 1 )
    return false;
  v = parseInt(V);
  if (v < 0)
    return false;
  digits = countDigits(V);
  len = V.length / 2;
  isVmp = false;
  checkNumbers();
  return isVmp;
}

function countDigits(s) {
  var offset = "0".charCodeAt(0);
  var ret = [0,0,0,0,0,0,0,0,0,0];
  for (var i = 0; i < s.length; i++)
    ret[s.charCodeAt(i) - offset]++;
  return ret;
}

function checkNumbers(number, depth) {
  if (isVmp)
    return;
  if (typeof number == 'undefined') {
    for (var i = 1; i < 10; i++) {
      if (digits[i] > 0) {
        digits[i]--;
        checkNumbers(i, len - 1);
        digits[i]++;
      }
    }
  } else if (depth == 0) {
    if (v % number == 0) {
      var b = v / number;
      if (number % 10 != 0 || b % 10 != 0) {
        var d = countDigits('' + b);
        if (d[0] == digits[0] && d[1] == digits[1] && d[2] == digits[2] &&
            d[3] == digits[3] && d[4] == digits[4] && d[5] == digits[5] &&
            d[6] == digits[6] && d[7] == digits[7] && d[8] == digits[8] &&
            d[9] == digits[9])
          isVmp = true;
      }
    }
  } else {
    for (var i = 0; i < 10; i++) {
      if (digits[i] > 0) {
        digits[i]--;
        checkNumbers(number * 10 + i, depth - 1);
        digits[i]++;
      }
    }
  }
}