2016-12-30 4 views
0

ラジオボタンが2つあります。「イタリア語」&「スペイン語」です。 1つを選択すると、 'Main'と 'Starter'入力が異なるファイルから読み込まれるようにするためのオートコンプリートはありません。したがって、「スペイン語」をチェックすると、オートコンプリートはhttp://xxx/spanish.php、「イタリアン」がチェックされている場合はhttp://xxx/italian.phpから行います。Javascriptラジオボタンの問題

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> 

AJAX呼び出しなど、動作しますが、私はif文をしようとすると、フィールドは/オートコンプリートを移入しないでください。

ありがとうございました。

+0

コンソールになっているか、エラー? – Curiousdev

+0

私は1つのajaxコールを持っていて、ラジオボタンを使って単純なif条件で正しい値を設定するか、urlパラメータを送信してクエリ/結果をフィルタリングするようにします。例 'assignments /?Lang = ******&Course = ******'このようにして、正しいクエリを返すPHPファイルを扱うことができます。 – NewToJS

+0

Curiousdev - 私はメッセージを受け取りました.. "Uncaught TypeError:" if(radio1.checked){"行に 'checked of' null 'を読み取れません。 – Tatws24

答えて

0

ajaxのURLとしてラジオの値を使用できます。また、jqueryセレクタを使用してチェック値を取得します。

//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

このコードでは、「jquery-1.10.2.js:8143 Uncaught SyntaxError:Unexpected token」というエラーが表示されます。それは私が新しいバージョンを使用する必要があるという意味ですか? – Tatws24

+0

どこにエラーが表示されているか不明です。いいえ、新しいバージョンは必要ありません。私は 'code' $("#radio input:checked ").val()' code'を追加し、無線入力に値を追加しました – pottedmeat7