2015-08-04 3 views
0

В настоящее время я работаю над цифровым помощником, который основан на JavaScript и jQuery. Пользователь может вводить вопросы или сообщать вспомогательные вещи в текстовое поле, а помощник будет реагировать на что-то относящееся к вводу. То, что я планирую реализовать, - проверить, содержит ли текстовое поле число (intager), и если он выполняет какую-то функцию. Концепция звучит довольно просто, но у меня проблемы. Я искал вокруг немного, но я не могу найти ничего, что будет работать с моим кодом.Проверьте, содержит ли текстовое поле число

Я добавлю свой JavaScript и nessacary части HTML. Но я предупреждаю вас, код грязный.

JavaScript:

// JavaScript Document 
function submitted() { 
    var srch = document.getElementById("srch"); 
    command(); 
    getPlaceHolder(); 
    srch.value = ""; 
} 

function searchKeyPress(e) { 
    e = e || window.event; 
    if (e.keyCode == 13) { 
     //document.getElementById('btn').click(); 
     submitted(); 
    } 
} 

function goBtn() { 
    submitted(); 
} 

function refreshBtn() { 
    getWelcome(); 
} 

function stClock() { 
    window.setTimeout("stClock()", 1000); 
    today = new Date(); 
    self.status = today.toString(); 
} 

function getWelcome() { 
    var ar = new Array(20) 
    ar[0] = "What's on your mind?"; 
    ar[1] = "How can I help?"; 
    ar[2] = "Anything you need help with?"; 
    ar[3] = "Ask me anything"; 
    ar[4] = "What can I help you with?"; 
    ar[5] = "What would you like me to do?"; 
    ar[6] = "What can I do for you?"; 
    ar[7] = "Need help with anything?"; 
    ar[8] = "Need someone to talk to?"; 
    ar[9] = "I'm here to help"; 
    ar[10] = "Anything you need to know?"; 
    ar[11] = "How else can I help?"; 
    ar[12] = "What can I do now?"; 
    ar[13] = "Need anything?"; 
    ar[14] = "Any problems you need solving?"; 
    ar[15] = "Hello, how do you do?"; 
    ar[16] = "Hi there"; 
    ar[17] = "Hi, I'm aurum"; 
    ar[18] = "Hello there"; 
    ar[19] = "How do you do?"; 
    var now = new Date(); 
    var sec = now.getSeconds(); 
    document.getElementById('output').innerHTML = ar[sec % 20]; 
} 

function getPlaceHolder() { 
    var ar = new Array(20) 
    ar[0] = "What's on your mind?"; 
    ar[1] = "How can I help?"; 
    ar[2] = "Anything you need help with?"; 
    ar[3] = "Ask me anything"; 
    ar[4] = "What can I help you with?"; 
    ar[5] = "What would you like me to do?"; 
    ar[6] = "What can I do for you?"; 
    ar[7] = "Need help with anything?"; 
    ar[8] = "Need someone to talk to?"; 
    ar[9] = "I'm here to help"; 
    ar[10] = "Anything you need to know?"; 
    ar[11] = "How else can I help?"; 
    ar[12] = "What can I do now?"; 
    ar[13] = "Need anything?"; 
    ar[14] = "Any problems you need solving?"; 
    ar[15] = "Hello, how do you do?"; 
    ar[16] = "Hi there"; 
    ar[17] = "Hi, I'm aurum"; 
    ar[18] = "Hello there"; 
    ar[19] = "How do you do?"; 
    var now = new Date(); 
    var sec = now.getSeconds(); 
    document.getElementsByName('srch')[0].placeholder=ar[sec % 20]; 
} 

function command() { 
     var srchVar = document.getElementById("srch"); 
     var srch = srchVar.value; 
     var t = srch; 
     var outputElement = document.getElementById('output'); 
     if (srch == '') { 
      outputElement.innerHTML = "How can I help you, if you don't say anything?"; 
     } 
     else if (srch.indexOf('about') != -1) { 
      outputElement.innerHTML = "Hello, I'm Aurum. I was designed by Omar Latreche to help people answer their questions. However, I also like to talk to people aswell as answer their questions."; 
     } 
     else if (srch.indexOf('time') != -1) { 
      outputElement.innerHTML = 'The current time according to your computer is' + ShowTime(new Date()); 
     } 
     else { 
      if (confirm("I am sorry but for some reason I don't understand. You could either repeat that or would you like to search Google for that instead?") == true) { 
       window.open('https://www.google.co.uk/#q=' + srch, '_blank'); 
      } 
      else { /* Nothing */ } 
     } 
    } 
    //Show time in 12hour format 
var ShowTime = (function() { 
    function addZero(num) { 
     return (num >= 0 && num < 10) ? "0" + num : num + ""; 
    } 
    return function(dt) { 
     var formatted = ''; 
     if (dt) { 
      var hours24 = dt.getHours(); 
      var hours = ((hours24 + 11) % 12) + 1; 
      formatted = [formatted, [addZero(hours), addZero(dt.getMinutes())].join(":"), hours24 > 11 ? "PM" : "AM"].join(" "); 
     } 
     return formatted; 
    }; 
})(); 

И HTML:

<!DOCTYPE html> 
<html> 
<body onload="getWelcome(); getPlaceHolder();"> 
    <div class="output" id="output"> 
     An error has occoured. Please make sure you have JavaScript enabled in your browser. 
    </div> 
    <div class="cont"> 
     <div class="ui-widget"> 
      <div class="search-cont"> 
       <input class="search-field" id="srch" name="srch" onkeypress="searchKeyPress(event);" placeholder="ask me anything" spellcheck="false"> <input class="refresh" onclick="refreshBtn()" title="Refresh the conversation" type="button"> <input class="go" onclick="goBtn()" type="button"> 
      </div> 
     </div><br> 
    </div> 
</body> 
</html> 

Я очень признателен за любую помощь при условии. Спасибо, Омар.

PS. Я извиняюсь за длинный абзац, но это единственный способ, который я мог бы объяснить, чтобы объяснить, что мне нужно.

PPS. Если вам нужна дополнительная информация о моем проекте, просто введите его адрес: http://omarlatreche.tk/aurum/

+0

«если текст содержит число». Это можно сделать с помощью регулярного выражения, в зависимости от того, что вы хотите. Является ли asd3ef действительным? или он должен быть в формате asd 3 ef? – juvian

+0

Я пробовал несколько регулярных выражений, но никто, кажется, не выполняет эту работу. –

ответ

1

Это функция, которую я придумал, чтобы проверить номер:

function checkNum() { 
    text = document.getElementById('srch').value; 
    valArr = document.getElementById('srch').value.split(' '); 

    for (i = 0; i < valArr.length; i++) { 
     if (isNaN(valArr[i])==false) { 
      alert("Number found"); 
     } 
    } 
} 

Here is the JSFiddle demo

Я назвал эту функцию в goBtn() функция.

+0

Это великолепно, спасибо вам большое! –

+0

@omar_latreche Рад, что я мог помочь :) –

1

вы можете объяснить эту строку?

document.getElementById('output').innerHTML = [0].innerHTML=ar[sec % 20]; 

не должно это быть

document.getElementById('output').innerHTML = ar[sec % 20]; 
+0

О, да. Сожалею. Виноват. –

+0

@omar_latreche ok, так как это stackoverflow, теперь вам нужно найти небольшую часть вашего кода, который не работает (например, как минимум, удалите все, кроме 2 каждого из ваших массивов), и задайте конкретный вопрос, объясняющий что вы считали определенной строкой кода и что она делает. – AwokeKnowing

+0

Что значит «удалить все, кроме 2 из ваших массивов»? –

Смежные вопросы