2017-02-18 2 views
2

So habe ich ein Textfeld, in dem der Benutzer eine URL schreiben kann.Abrufen der URL-Domäne aus einer Zeichenfolge in jQuery

Ich habe ein Dropdown-Menü mit den Flaggen der Länder und ihren Codes.

Was ich erreichen möchte ist, wenn ein Benutzer eine URL eingibt, wird das Flag in die URL-Domäne geändert. Beispiel: Wenn der Benutzer google.com eingibt, sollte das Dropdown-Feld den Wert nach dem Punkt auswählen und die Flagge USA auswählen.

ich diese Bibliothek bin mit: https://github.com/mrmarkfrench/country-select-js

Hier ist mein HTML-Code ist:

<form method="post"> 
    <input type="hidden" name="addsite" value="true" /> 
    <p> 
     <label for="site_url">Site url:</label> 
     <input type="text" name="site_url" id="urlText" placeholder="domain.xxx" value="" /> 
    </p> 
    <label for="site_url">Search locale:</label> 
    <input id="country_selector" type="text"> 
    <label for="site_url"></label> 
    <br> 
    <br> 
    <input type="submit" name="submit" class="btn" value="Add"> 
</form> 

Und hier sind die Skripten:

//the script to initalize the dropdown 
$("#country_selector").countrySelect({ 
    defaultCountry: "dk", 
    //onlyCountries: ['us', 'gb', 'ch', 'ca', 'do'], 
    preferredCountries: ['dk', 'gb', 'us', 'ca'] 
}); 

//script to change the dropdown value 
$('#urlText').change(function changeCountry(string selectedCountryValue) { 
    $("#country_selector").countrySelect("selectCountry", $selectedCountryValue); 
}); 

//script I've attempted to write 
(function($) { 
    $('#urlText').on('change', function() { 
     var value = this.value, 
      parts = this.value.split('.'), 
      str, $opt; 
     for (var i = 0; i < parts.length; i++) { 
      str = '.' + parts.slice(i).join('.'); 
      $opt = $('#country_selector selectCountry[value="' + str + '"]'); 
      if ($opt.length) { 
       $opt.prop('selected', true); 
       break; 
      } 
     } 
    }) 
})(jQuery); 

So sind die letzten beiden Skripte fehlerhaft sind. Wie kann ich sie schreiben, so ChangeCountry-Funktion nimmt eine Zeichenfolge ausgewähltValue und dann die letzte Funktion sollte changeCountry (str) aufrufen?

EDIT: Ich glaube, ich könnte sogar grundlegende jQuery Fehler gemacht haben ...

Antwort

2

Hier ist ein Beispiel dafür, wie Sie den Domain-Suffix Teil Ihrer URL zu bekommen.

$('#btnGetUrlDomain').on('click', function() { 
 
    var parts = $('#txtUrl').val().split('.') 
 
    var domain = parts[parts.length - 1] 
 
    console.log(domain) 
 
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<input id='txtUrl' type='text' value='www.google.com' /> 
 
<button id='btnGetUrlDomain'> 
 
Get URL 
 
</button>

Also dann würden Sie rufen Sie einfach das Land-select-js land-Methode.

$('#btnGetUrlDomain').on('click', function() { 
    var parts = $('#txtUrl').val().split('.') 
    var domain = parts[parts.length - 1] 
    $("#country_selector").countrySelect("selectCountry", domain); 
}) 
+0

ich Ihren Code lief, und ich erhielt nur die .com-Teil und das Hinzufügen einer Dateierweiterung der URL noch Schrauben es nach oben (wie sie es immer tun). Die Domäne ist domain.xxx und nicht nur der Teil ".xxx". Das "www." Teil einer Domain ist die Subdomain, aber www ist eine Art Referenz. Es beeinflusst nichts. –

+0

Nicht sicher, ich verstehe ganz, was Sie versuchen zu tun. In Ihrem Beispiel heißt es: "Wenn der Nutzer google.com eingibt, sollte das Drop-down-Menü den Wert nach dem Punkt auswählen und die US-Flagge auswählen." - Der Wert nach dem Punkt wäre "com"? – jonofan

+0

Vielleicht möchten Sie Ihren Kommentar im Kommentarbereich auf seine eigentliche Frage und nicht Ihre Antwort. Ich denke nicht, dass er eine Benachrichtigung für einen Kommentar zu einer Antwort bekommen wird, so wie er es bei der Frage tun wird. –

1

So, hier ist das, was ich brauchte:

$('#urlText').on('change', function() { 
    var parts = $('#urlText').val().split('.') 
    var domain = parts[parts.length - 1] 
    $("#txtUrls").val(domain); 
    $("#country_selector").countrySelect("selectCountry", domain); 
}) 
Verwandte Themen