2016-12-30 1 views
0

Ich habe zwei Radiobuttons - 'Italienisch' & 'Spanisch'. Wenn einer ausgewählt ist, werde ich die Autovervollständigung für "Main" und "Starter" Eingänge nicht aus verschiedenen Dateien bevölkern. Wenn "Spanisch" aktiviert ist, wird es automatisch von http://xxx/spanish.php automatisch vervollständigt, und wenn "Italienisch" überprüft wird, wird es von http://xxx/italian.php.Javascript Optionsfelder Ausgabe

var radio1 = document.getElementById("radio1"); 
var radio3 = document.getElementById("radio3"); 

if (radio1.checked){ 
    alert("radio1 selected"); 


     //Starter Autocomplete (Spanish)   
     var starterSearchData; 
     $(function() { 
      $.ajax({ 
       url: "http://learn.cf.ac.uk/webstudent/sem5tl/javascript/assignments/spanish.php", 
       dataType: "jsonp", 
       async: false, 
       success: function(data) { 
        starterSearchData = $.map(data, function(item) { 
         if (item.course == "starter") 
          return item.name; 
        }); 
        EnableAutoComplete(); 
       }, 
       error: function(xhr, status, error) { 
        var err = eval("(" + xhr.responseText + ")"); 
        alert(err.Message); 
       } 
      }); 

      function EnableAutoComplete() { 
       $("#starter").autocomplete({ 
        source: starterSearchData, 
        minLength: 2, 
        delay: 010 
       }); 
      } 
     }); 

     //Main Autocomplete (Spanish)   
     var mainSearchData; 
     $(function() { 
      $.ajax({ 
       url: "http://learn.cf.ac.uk/webstudent/sem5tl/javascript/assignments/spanish.php", 
       dataType: "jsonp", 
       async: false, 
       success: function(data) { 
        mainSearchData = $.map(data, function(item) { 
         if (item.course == "main") 
          return item.name; 
        }); 
        EnableAutoComplete(); 
       }, 
       error: function(xhr, status, error) { 
        var err = eval("(" + xhr.responseText + ")"); 
        alert(err.Message); 
       } 
      }); 

      function EnableAutoComplete() { 
       $("#main").autocomplete({ 
        source: mainSearchData, 
        minLength: 2, 
        delay: 010 
       }); 
      } 
     }); 

}else if (radio3.checked) { .... same code, except url changed to http://xxx/italian.php... } 

HTML:

<div id="radio"> 
    <input type="radio" id="radio1" name="radio"><label for="radio1">Spanish</label> 
    <input type="radio" id="radio3" name="radio"><label for="radio3">Italian</label> 
</div> 
<label for="starter">Choose starter</label> 
<input type="text" name="starter" id="starter"><br> 
<label for="main">Choose main</label> 
<input type="text" name="main" id="main"><br> 

Der Ajax-Aufruf, usw., funktioniert, aber wenn ich die if-Anweisung versuchen, die Felder füllen nicht/die automatische Vervollständigung.

Danke.

+0

welche Fehler Sie in der Konsole zu bekommen? – Curiousdev

+0

Ich würde einen Ajax-Aufruf haben und die Optionsfelder verwenden, um die korrekten Werte in einer einfachen if-Bedingung zu setzen oder URL-Parameter zum Filtern der Abfrage/Ergebnisse zu senden. Beispiel 'Zuweisungen /? Lang = ****** & Kurs = ******' Auf diese Weise können Sie eine PHP-Datei mit der Rückgabe der richtigen Abfrage befassen. – NewToJS

+0

Curiousdev - Ich bekomme die Nachricht .. "Uncaught TypeError: Kann die Eigenschaft 'checked' von null" für die "if (radio1.checked) {" Zeile nicht lesen. – Tatws24

Antwort

0

Sie könnten den Wert des Radios als URL in Ajax verwenden. Und abgerufenen Wert über Jquery-Selektor abrufen.

//Starter Autocomplete (Spanish)   
    var starterSearchData; 
    $(function() { 
     $.ajax({ 
      url: $("#radio input:checked").val(), 
      dataType: "jsonp", 
      async: false, 
      success: function(data) { 
       starterSearchData = $.map(data, function(item) { 
        if (item.course == "starter") 
         return item.name; 
       }); 
       EnableAutoComplete(); 
      }, 
      error: function(xhr, status, error) { 
       var err = eval("(" + xhr.responseText + ")"); 
       alert(err.Message); 
      } 
     }); 

     function EnableAutoComplete() { 
      $("#starter").autocomplete({ 
       source: starterSearchData, 
       minLength: 2, 
       delay: 010 
      }); 
     } 
    }); 

    //Main Autocomplete (Spanish)   
    var mainSearchData; 
    $(function() { 
     $.ajax({ 
      url: $("#radio input:checked").val(), 
      dataType: "jsonp", 
      async: false, 
      success: function(data) { 
       mainSearchData = $.map(data, function(item) { 
        if (item.course == "main") 
         return item.name; 
       }); 
       EnableAutoComplete(); 
      }, 
      error: function(xhr, status, error) { 
       var err = eval("(" + xhr.responseText + ")"); 
       alert(err.Message); 
      } 
     }); 

     function EnableAutoComplete() { 
      $("#main").autocomplete({ 
       source: mainSearchData, 
       minLength: 2, 
       delay: 010 
      }); 
     } 
    }); 

HTML:

<div id="radio"> 
    <input type="radio" id="radio1" name="radio" value="http://learn.cf.ac.uk/webstudent/sem5tl/javascript/assignments/spanish.php"><label for="radio1">Spanish</label> 
    <input type="radio" id="radio3" name="radio" value="http://learn.cf.ac.uk/webstudent/sem5tl/javascript/assignments/italian.php"><label for="radio3">Italian</label> 
</div> 
<label for="starter">Choose starter</label> 
<input type="text" name="starter" id="starter"><br> 
<label for="main">Choose main</label> 
<input type="text" name="main" id="main"><br> 
+0

Ich bekomme den Fehler "jquery-1.10.2.js: 8143 Uncaught SyntaxError: Unerwartete Token" mit diesem Code. Bedeutet das, dass ich eine neuere Version verwenden muss? – Tatws24

+0

nicht sicher, wo Sie den Fehler erhalten. Nein, Sie sollten keine neuere Version benötigen. Ich habe gerade 'code' $ (" # radio input: checked "). Val()' code' hinzugefügt und Werte in die Radio-Eingänge hinzugefügt – pottedmeat7