2017-02-18 12 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); 

だから、最後の2つのスクリプトが故障しています。どうすればそれらを書くことができますか?changeCountry関数は文字列selectedValueをとり、最後の関数はchangeCountry(str)を呼び出す必要がありますか?

編集:私は私も基本的なjQueryのミスを犯しているかもしれないと思う...ここ

答えて

2

はあなたのURLのドメインサフィックス部分を取得する方法の一例です。

$('#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からcountrySelectメソッドを呼び出します。だからここ

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

私はあなたのコードを実行した、と私は唯一の.com一部を受信し、ねじまだURLにファイル拡張子を追加する(彼らはいつものように)。ドメインは「.xxx」だけでなく、domain.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); 
}) 
関連する問題