Ich habe ein Formular mit vielen Feldern, aber ich habe zwei Auswahlen, eine für die Auswahl des Landes und eine für die Auswahl der Städte des Landes, das ich ausgewählt habe.AJAX, Django und HTML auswählen?
Ich möchte Folgendes machen: Wenn ich das Land in der ersten Auswahl auswähle, möchte ich die Städte der zweiten Auswahl ändern, gefiltert nach der ID des Contry, das ich ausgewählt habe.
Hier ist meine Models.py
class country(models.Model):
country_name = models.CharField(max_length=264)
def __str__(self):
return self.country_name
class country_cities(models.Model):
city_name = models.CharField(max_length=264)
country = models.ForeignKey(country)
def __str__(self):
return self.city_name
Und hier ist meine HTML-Form:
<form method="post">
<input type="text" name="username">
<select name="country" onchange="listCities()">
{% for country in countrylist %}
<option value="{{ country.id }}">{{ country.country_name }}</option>
{% endor %}
</select>
<select name="city" id="citylist">
<!--HERE IS WHERE I WANT TO LIST JUST THE CITIES OF THE COUNTRY THAT I SELECTED-->
</select>
</form>
Wie mache ich meine Ansicht und welche Bibliotheken Ich habe in meinem views.py importieren? Ich bin mir auch nicht sicher, ob meine AJAX-Bibliothek oder mein Skript korrekt ist.
AJAX:
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js">
</script>
SCRIPT:
<script type="text/javascript">
function listCities()
{
var countryid = $("[name='country']").val();
$('#citylist').html('');
$.ajax({
type: "POST",
data: "countryid="+countryid,
url: "editprofile/",
success: function(result)
{
var resultObj = JSON.parse(result);
var dataHandler = $("#citylist");
$.each(resultObj, function(key, val)
{
var newRow = $('<option value="'+val.id+'">');
newRow.html(' '+val.city_name +'');
dataHandler.append(newRow);
});
}
});
}
</script>
Anstatt einen Ajax-Anruf zu tätigen, haben Sie in Erwägung gezogen, alle Städte in einem json-Objekt auf Client-Seite zu laden und mit einfachem JavaScript die Optionen in Ihrer zweiten Auswahl zu ändern? – DragonBobZ
Hier ist eine Geige https://jsfiddle.net/q4np1169/ wie das aussehen würde. (mit jquery, nicht plain js) – DragonBobZ