2016-12-30 133 views
0

我有两个单选按钮 - '意大利'&'西班牙语'。当选择一个时,我不会使用从不同文件填充“主”和“入门”输入的自动完成功能。所以当'西班牙'被选中时,它从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

我会有一个ajax调用,并使用单选按钮来设置正确的值在一个简单的条件,或让它发送url参数来过滤查询/结果。例子'assignments /?Lang = ******&Course = ******'这样你可以有一个php文件处理返回正确的查询。 – NewToJS

+0

Curiousdev - 我得到的消息..“未捕获的类型错误:无法读取属性'检查'空”为“if(radio1.checked){”行。 – Tatws24

回答

0

您可以使用无线电的值作为ajax中的网址。并通过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