2017-02-18 41 views
2

所以我有一個文本框用戶可以寫一個URL。從jQuery中的字符串獲取URL的域名

我有一個國家的旗幟和他們的代碼下拉菜單。

我想實現的是當用戶鍵入一個URL時,該標誌將被更改爲URL的域。例如:如果用戶鍵入google.com,則下拉框應選擇點後面的值,並選擇美國國旗。

我使用這個庫:https://github.com/mrmarkfrench/country-select-js

這裏是我的HTML代碼:

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

而且這裏的腳本:

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

所以最後兩個劇本有問題。我怎麼寫他們,所以changeCountry函數接受一個字符串selectedValue,然後最後一個函數應該調用changeCountry(str)?

編輯:我想我可能已經取得基本的jQuery的錯誤甚至...

回答

2

這裏是你如何能得到您的網址的域名後綴部的例子。

$('#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>

,那麼你只需調用全國選-JS國別方法。

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

我跑你的代碼,我只收到了部分.COM和添加文件擴展名的URL仍然螺絲它(就像他們總是這樣)。域名是domain.xxx,不只是「.xxx」部分。 「www。」域名的一部分是子域名,但www是一種參考。這實際上並沒有影響任何東西。 –

+0

不知道我很明白你想要做什麼。你的例子說「如果用戶鍵入google.com,下拉框應選擇點後的值,選擇美國國旗。」 - 點後面的值是「com」? – jonofan

+0

可能希望將您的評論發佈在他的實際問題的評論部分,而不是您的答案。我不認爲他會收到通知,要求他就這個問題回答他的答案。 –

1

因此,這裏是我所需要的:

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