2015-11-10 2 views
4

Новой для JQuery и JavaScript, и я не уверен в том, чтобы заменить это автозаполнениеПрименение JQuery автозаполнения JSon источник данных на динамически ведомую форме

// autocomplete enablement 
    var availableAttributes = [ 
     "account_address", 
     "account_address_city", 
     "account_address_country", 
     "account_address_state", 
     "account_address_street1", 
     "account_address_street2", 
     "account_address_zip", 
     "account_email", 
     "account_login", 
     "account_name", 
     "account_number", 
     "account_telephone" 
    ]; 

в

$(function() { 
    var max_fields  = 10; //maximum input boxes allowed 
    var wrapper   = $(".input_fields_wrap"); //Fields wrapper 
    var add_button  = $(".add_field_button"); //Add button ID 
// autocomplete enablement 
    var availableAttributes = [ 
     "account_address", 
     "account_address_city", 
     "account_address_country", 
     "account_address_state", 
     "account_address_street1", 
     "account_address_street2", 
     "account_address_zip", 
     "account_email", 
     "account_login", 
     "account_name", 
     "account_number", 
     "account_telephone" 
    ]; 
    $("input[name^='mytext']").autocomplete({ 
     source: availableAttributes 
    });  

    var x = 1; //initlal text box count 
    $(add_button).click(function(e){ //on add input button click 
     e.preventDefault(); 
     if(x < max_fields){ //max input box allowed 
      x++; //text box increment 
      $(wrapper).append($('<div><input type="text" name="mytext[]"/><a href="#" class="remove_field">Remove</a></div>').find(":text").autocomplete({ 
     source: availableAttributes 
    })); //add input box 
     } 
    }); 

    $(wrapper).on("click",".remove_field", function(e){ //user click on remove text 
     e.preventDefault(); $(this).parent('div').remove(); x--; 
    }) 


    }); 

с (удаленным Datasource JQuery Jason Автозаполнение. Link http://jqueryui.com/autocomplete/#remote-jsonp)

$(function() { 
    function log(message) { 
     $("<div>").text(message).prependTo("#log"); 
     $("#log").scrollTop(0); 
    } 

    $("#city").autocomplete({ 
     source: function(request, response) { 
     $.ajax({ 
      url: "http://gd.geobytes.com/AutoCompleteCity", 
      dataType: "jsonp", 
      data: { 
      q: request.term 
      }, 
      success: function(data) { 
      response(data); 
      } 
     }); 
     }, 
     minLength: 3, 
     select: function(event, ui) { 
     log(ui.item ? 
      "Selected: " + ui.item.label : 
      "Nothing selected, input was " + this.value); 
     }, 
     open: function() { 
     $(this).removeClass("ui-corner-all").addClass("ui-corner-top"); 
     }, 
     close: function() { 
     $(this).removeClass("ui-corner-top").addClass("ui-corner-all"); 
     } 
    }); 
    }); 

Полный HTML, (jsfiddle)

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
<title>Untitled Document</title> 

<script type="text/javascript" src="jquery-2.0.2.min.js"></script> 
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.10.3/jquery-ui.js"></script> 

<script> 
var availableAttributes = [ "account_address", "account_address_city", "account_address_country", "account_address_state", "account_address_street1", "account_address_street2", "account_address_zip", "account_email", "account_login", "account_name", "account_number", "account_telephone"]; 

$(document).ready(function() { 
    var max_fields = 10; //maximum input boxes allowed 
    var wrapper = $(".input_fields_wrap"); //Fields wrapper 
    var add_button = $(".add_field_button"); //Add button ID 

    var x = 1; //initlal text box count 
    $(add_button).click(function(e) { //on add input button click 
     e.preventDefault(); 
     if (x < max_fields) { //max input box allowed 
      x++; //text box increment 
      // $(wrapper).append('<div><input id="' + x + '" type="text" name="mytext"/><a href="#" class="remove_field">Remove</a></div>'); //add input box 
      $(wrapper).append('<div>' + '<input id="' + x + '" type="text" name="mytext"><br>' + '<textarea name="desc[]"></textarea>' + '<a href="#" class="remove_field">Remove</a>' +'</div>'); 
      $("input[id=" + x + "]").autocomplete({ 
       source: availableAttributes 
      }); 
     } 
    }); 

    $(wrapper).on("click", ".remove_field", function(e) { //user click on remove text 
     e.preventDefault(); 
     $(this).parent('div').remove(); 
     x--; 
    }) 
}); 

// autocomplete enablement 
$(function() { 
    $("input[name^='mytext']").autocomplete({ 
     source: availableAttributes 
    }); 
}); 

</script> 
</head> 

<body> 
    <div class="input_fields_wrap"> 
     <button class="add_field_button">Add More Fields</button> 
     <div><input type="text" name="mytext[]"></div> 
     <textarea name="desc[]"></textarea> 
    </div> 
</body> 
</html> 
+0

Что вебсервис вы планируете использовать? – BenG

+0

@ BG101, html css javascript, jQuery, php, mysql –

+0

url Я имел в виду извините. – BenG

ответ

0

Вот рабочий пример того, что вы вывесили

$(document).ready(function() {  
 
    
 
$(".myText").autocomplete({ 
 

 
source: function (request, response) { 
 
jQuery.getJSON(
 
\t "http://gd.geobytes.com/AutoCompleteCity?callback=?&q="+request.term, 
 
\t function (data) { 
 
\t response(data); 
 
\t } 
 
); 
 
}, 
 
minLength: 3 
 
}); 
 

 
var max_fields = 10; //maximum input boxes allowed 
 
var wrapper = $(".input_fields_wrap"); //Fields wrapper 
 
var add_button = $(".add_field_button"); //Add button ID 
 

 
var x = 1; //initlal text box count 
 
$(add_button).click(function(e) { //on add input button click 
 
    e.preventDefault(); 
 
    if (x < max_fields) { //max input box allowed 
 
     x++; //text box increment 
 
     // $(wrapper).append('<div><input id="' + x + '" type="text" name="mytext"/><a href="#" class="remove_field">Remove</a></div>'); //add input box 
 
     $(wrapper).append('<div>' + '<input id="' + x + '" type="text" class="myText" id="myText"><br>' + '<textarea name="desc[]"></textarea>' + '<a href="#" class="remove_field">Remove</a>' +'</div>'); 
 
     
 
     $("#" + x).autocomplete({ 
 

 
source: function (request, response) { 
 
jQuery.getJSON(
 
\t "http://gd.geobytes.com/AutoCompleteCity?callback=?&q="+request.term, 
 
\t function (data) { 
 
\t response(data); 
 
\t } 
 
); 
 
}, 
 
minLength: 3 
 
}); 
 
    } 
 
}); 
 

 
$(wrapper).on("click", ".remove_field", function(e) { //user click on remove text 
 
    e.preventDefault(); 
 
    $(this).parent('div').remove(); 
 
    x--; 
 
}); 
 
});
<link href="https://code.jquery.com/ui/1.11.4/themes/smoothness/jquery-ui.css" rel="stylesheet"/> 
 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script> 
 
<script src="https://code.jquery.com/ui/1.11.4/jquery-ui.js"></script> 
 
<div class="input_fields_wrap"> 
 
     <button class="add_field_button">Add More Fields</button> 
 
     <div><input type="text" class="myText" name="myText" id="myText"></div> 
 
     <textarea name="desc[]"></textarea> 
 
    </div>

+0

необходимо заменить вышеуказанный автокомпонент на http://jqueryui.com/autocomplete/#remote-jsonp –

+0

Я обновил его, вам нужно будет написать свою собственную страницу, чтобы вернуть json, если вы хотите загрузить его с помощью пульта дистанционного управления вариант. Но это работает с примером jquery – Diginari

+0

вы очень близки. Да, это работает, но только для первого поля. Как только вы нажмете кнопку «Добавить дополнительные поля», автозаполнение перестанет работать во втором поле. Не могли бы вы исправить это, прежде чем я приму свой ответ. –

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