Как вызвать функцию на основе входного значения в JavaScript? - PullRequest
0 голосов
/ 12 июня 2018

Ниже приведен мой пример кода Html, в котором есть единственное поле ввода, которое принимает цифры и алфавит.

Мне нужно вызывать функцию в соответствии со значениями, введенными пользователем, т.е. если пользователь вводит чистый 10dgits номер телефона, затем позвоните по номеру функции (), если пользователь вводит функцию вызова по электронной почте email (), иначе смешайте, а затем ошибка.

Мне нужен только один элемент ввода для номера телефона и электронной почты.

HTML

<div>
<input type="text" id="contact"/>
<button onClick()="???">Submit</button>
</div>

<script>
function number(){
  // call when input value is a number;
}

function email() {
 // call this when input value is an email;
}
</script>

Ответы [ 4 ]

0 голосов
/ 12 июня 2018
Try this....

 <div>
    <input type="text" id="contact"/>
    <button onClick()="decideFun();">Submit</button>
    </div>

    <script>
    function decideFun(){
      var inputVal = $("#contact").val();

      if($.isNumeric(inputVal)==true) number();
      else email();
    }
    function number(){
      // call when input value is a number;
    }

    function email() {
     // call this when input value is an email;
    }
    </script>
0 голосов
/ 12 июня 2018

Просто вызовите другую функцию, которая проверяет, является ли значение числом, и действуйте соответственно:

function func() {
  let val = document.getElementById("contact").value;
  if (!isNaN(parseInt(val))) number();
  else email();
}

function number() {
  // call when input value is a number;
  console.log("number() called");
}

function email() {
  // call this when input value is an email;
  console.log("email() called");
}
<input type="text" id="contact" />
<button onclick="func()">Submit</button>
0 голосов
/ 12 июня 2018

Вы можете использовать regex для проверки значений электронной почты и parseInt() с проверкой длины для проверки значения номера телефона

function checkInput(){
  var contact = document.getElementById('contact').value;
  if(contact.length === 10 && parseInt(contact)){
    number();
  } else if(!parseInt(contact)){
    var reg = /^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
    if(reg.test(contact)){
       email();
    } else {
       mix();
    }
  } else {
     mix();
  }
  
}
function number(){
  console.log("number");
}

function email() {
 console.log("email");
}

function mix() {
  console.log("Error");
}
<div>
<input type="text" id="contact"/>
<button onClick="checkInput();">Submit</button>
</div>
0 голосов
/ 12 июня 2018
<button onclick="number()">Submit</button>

Если вы не знаете, какую функцию вызывать, вам необходимо определить, что:

HTML:

<button onclick="decideFunction()">Submit</button>

JS:

function decideFunction() {
    const value = document.getElementById('contact').value;
    if (!Number.isNaN(value)) {
        number();
    } else if (isEmail(value)) { // check with regexp
        email(); //etc..
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...