Почему мои <script>дают мне неопределенную ошибку, даже если она вызывается? - PullRequest
0 голосов
/ 25 сентября 2018

Я работаю над файлом .cfm, который ищет людей в базе данных.Форма поиска должна заполнить строку имен, как только я начну печатать, используя 'onKeyUp', однако она дает мне понять, что моя переменная 'stearchy' не определена.

Я довольно новичок в ColdFusion, манипулируя DOM Elements, но я думаю, что это вопрос сферы применения, потому что он просто не читает его.Следующее, что я попробовал, это: Поместите onKeyUp ниже функции.

Любая помощь в правильном направлении будет отличной.Ниже приведен код переменной:

var stearchy = function() {
  while ( document.getElementById("daGuess").options.length ) document.getElementById("daGuess").options[0] = null;
  nam = [];
  hs = [];
  var boundLeft = document.getElementById("daSearch").value.indexOf(" ");
  if (boundLeft <= 0) var boundLeft = document.getElementById("daSearch").value.length;
  var boundRight = document.getElementById("daSearch").value.indexOf(" ")+1;
  <!--- if (boundRight == -1) var boundRight = 0; --->
  var ges = [];
  for ( i = 0; i < alums.length; i++ ) {            
    if (boundLeft > 0) {
      if ( document.getElementById("daSearch").value.search(/[A-Z][a-z]/) != -1) { 
        var noo = removeDiacritics(alums[i]["NameNickname"]).indexOf(removeDiacritics(document.getElementById("daSearch").value.slice(0,boundLeft)));
        var moo = removeDiacritics(alums[i]["NameFirst"]).indexOf(removeDiacritics(document.getElementById("daSearch").value.slice(0,boundLeft)));
        var loo = removeDiacritics(alums[i]["NameLast"]).indexOf(removeDiacritics(document.getElementById("daSearch").value.slice(boundRight,document.getElementById("daSearch").value.length)));
      /*Otherwise do a case-insensitive search*/
      } else {
        var noo = removeDiacritics(alums[i]["NameNickname"]).toLowerCase().indexOf(removeDiacritics(document.getElementById("daSearch").value.toLowerCase().slice(0,boundLeft)));
        var moo = removeDiacritics(alums[i]["NameFirst"]).toLowerCase().indexOf(removeDiacritics(document.getElementById("daSearch").value.toLowerCase().slice(0,boundLeft)));
        var loo = removeDiacritics(alums[i]["NameLast"]).toLowerCase().indexOf(removeDiacritics(document.getElementById("daSearch").value.toLowerCase().slice(boundRight,document.getElementById("daSearch").value.length)));
      }
      if (document.getElementById("daSearch").value.indexOf(" ") > 0 && document.getElementById("daSearch").value.indexOf(" ") < document.getElementById("daSearch").value.length-1) {
        if ( noo != -1 && loo != -1 ) { 
          ges[ges.length] = {tex:'"'+alums[i]["NameNickname"]+'"'+' '+alums[i]["NameFirst"]+' '+alums[i]["NameMiddle"]+' '+alums[i]["NameLast"].toUpperCase(),val:alums[i]["IDStudent"],nam:alums[i]["NameNickname"]+' '+alums[i]["NameLast"],hs:alums[i]["HS"]};
        }
        if ( moo != -1 && loo != -1 ) { 
          if(alums[i]["NameNickname"] != '') {
            ges[ges.length] = {tex:'"'+alums[i]["NameNickname"]+'"'+' '+alums[i]["NameFirst"]+' '+alums[i]["NameMiddle"]+' '+alums[i]["NameLast"].toUpperCase(),val:alums[i]["IDStudent"],nam:alums[i]["NameNickname"]+' '+alums[i]["NameLast"],hs:alums[i]["HS"]};
          } else {
            ges[ges.length] = {tex:alums[i]["NameFirst"]+' '+alums[i]["NameMiddle"]+' '+alums[i]["NameLast"].toUpperCase(),val:alums[i]["IDStudent"],nam:alums[i]["NameFirst"]+' '+alums[i]["NameLast"],hs:alums[i]["HS"]};
          }
        }
      } else {
        if ( noo != -1 ) { 
          ges[ges.length] = {tex:'"'+alums[i]["NameNickname"]+'"'+' '+alums[i]["NameFirst"]+' '+alums[i]["NameMiddle"]+' '+alums[i]["NameLast"].toUpperCase(),val:alums[i]["IDStudent"],nam:alums[i]["NameNickname"]+' '+alums[i]["NameLast"],hs:alums[i]["HS"]};
        }
        if ( moo != -1 ) { 
          if(alums[i]["NameNickname"] != '') {
            ges[ges.length] = {tex:'"'+alums[i]["NameNickname"]+'"'+' '+alums[i]["NameFirst"]+' '+alums[i]["NameMiddle"]+' '+alums[i]["NameLast"].toUpperCase(),val:alums[i]["IDStudent"],nam:alums[i]["NameNickname"]+' '+alums[i]["NameLast"],hs:alums[i]["HS"]};
          } else {
            ges[ges.length] = {tex:alums[i]["NameFirst"]+' '+alums[i]["NameMiddle"]+' '+alums[i]["NameLast"].toUpperCase(),val:alums[i]["IDStudent"],nam:alums[i]["NameFirst"]+' '+alums[i]["NameLast"],hs:alums[i]["HS"]};
          }
        }
        if (boundRight < document.getElementById("daSearch").value.length) {
          if ( loo != -1  ) { 
            if(alums[i]["NameNickname"] != '') {
              ges[ges.length] = {tex:'"'+alums[i]["NameNickname"]+'"'+' '+alums[i]["NameFirst"]+' '+alums[i]["NameMiddle"]+' '+alums[i]["NameLast"].toUpperCase(),val:alums[i]["IDStudent"],nam:alums[i]["NameNickname"]+' '+alums[i]["NameLast"],hs:alums[i]["HS"]};
            } else {
              ges[ges.length] = {tex:alums[i]["NameFirst"]+' '+alums[i]["NameMiddle"]+' '+alums[i]["NameLast"].toUpperCase(),val:alums[i]["IDStudent"],nam:alums[i]["NameFirst"]+' '+alums[i]["NameLast"],hs:alums[i]["HS"]};
            }
          }
        }
      }
    }
  }

Это функция onKeyUp для формы поиска:

<cfif isDefined("form.RegGuest") OR isDefined("form.RegAlum")>
    Search: <input type="text" name="daSearch" value="" id="daSearch" onkeyup="stearchy()">

    <script> 
    document.getElementById("daSearch").focus();
    </script>
</cfif> 

Ответы [ 2 ]

0 голосов
/ 25 сентября 2018

Я нашел свой ответ:

У меня была проблема со строковым литералом, из-за которого не работала действительная переменная.

То, что было раньше:

                    var alums = [<cfoutput query="Final">{NameNickname:"#Replace(Trim(NameNickname),"""","'","ALL")#",NameFirst:"#Replace(Trim(NameFirst),"""","'","ALL")#",NameMiddle:"#Replace(Trim(NameMiddle),"""","'","ALL")#",NameLast:"#Replace(Trim(NameLast),"""","'","ALL")#",Email:"#Trim(PhoneNumber)#",IDStudent:"#IDStudent#",HS:"#School_current#"}<cfif RecordCount NEQ CurrentRow>,</cfif></cfoutput>];

Мне пришлось изменить строку Email с номера телефона, чтобы она правильно читалась.

            var alums = [<cfoutput query="Final">{NameNickname:"#Replace(Trim(NameNickname),"""","'","ALL")#",NameFirst:"#Replace(Trim(NameFirst),"""","'","ALL")#",NameMiddle:"#Replace(Trim(NameMiddle),"""","'","ALL")#",NameLast:"#Replace(Trim(NameLast),"""","'","ALL")#",Email:"",IDStudent:"#IDStudent#",HS:"#School_current#"}<cfif RecordCount NEQ CurrentRow>,</cfif></cfoutput>];

Однако я изменил функцию var и ввел текст / javascript, чтобывозможно, сработало.

Большое спасибо за руководство всем!

0 голосов
/ 25 сентября 2018

Может быть

<cfif isDefined("form.RegGuest") OR isDefined("form.RegAlum")>
    Search: <input type="text" name="daSearch" value="" id="daSearch" onkeyup="stearchy()">
    <cfoutput>
       <script type="text/javascript"> 
          document.getElementById("daSearch").focus();
       </script>
    </cfoutput>
</cfif> 
...