入力ボックスの最初の 7 つのアルファベットを検証したいのですが、コードが機能しません。
<input type="text" value="www.example.com" id="txt_url"
onkeyup="if(!this.value.match(/^http\:\/\//) && (txt_url.lenght >= 7 )this.value='http://'+this.value" />
入力ボックスの最初の 7 つのアルファベットを検証したいのですが、コードが機能しません。
<input type="text" value="www.example.com" id="txt_url"
onkeyup="if(!this.value.match(/^http\:\/\//) && (txt_url.lenght >= 7 )this.value='http://'+this.value" />
lenght
ます。以下はぼかしを想定していますが、イベントを好きなように変更できます。
jQuery:
$(function() {
$('#text_url').on('blur', function() {
if (!/https?:\/\//.test($(this).val()))
$(this).val('http://'+$(this).val());
});
});
ネイティブJS:
document.addEventListener('DOMContentLoaded', function() {
document.querySelector('#text_url').addEventListener('blur', function() {
if (!/https?:\/\//.test(this.value))
this.value = 'http://'+this.value;
}, false);
}, false);
このコードが機能しない理由は 3 つあります。
lenght
する必要がありますlength
。txt_url.length
する必要がありますthis.value.length
。)
の最後にクロージングがありません。if
作業バージョン:
<input type="text" value="www.example.com" id="txt_url"
onkeyup="if(!this.value.match(/^http\:\/\//) && (this.value.length >= 7))this.value='http://'+this.value" />
使用した関数(txt_url.length)にスペルミスがあります。
それは私が信じているtxt_url.lengthでなければなりません。また、URL を検証したい場合は、ネット上でより優れた正規表現を利用できます。
修正されたコードは
<input type="text" value="www.example.com" id="txt_url"
onkeyup="if(this.value.match(/^http\:\/\//)==null
&& this.value.length>7)this.value='http://'+this.value;" />
しかし、ab.com のような短いドメイン名でも http:// プレフィックスを自動的に付けたい場合は、
<input type="text" value="www.example.com" id="txt_url"
onkeyup="if(this.value.match(/^h(t(t(p(\:(\/(\/)?)?)?)?)?)?/)==null)
this.value='http://'+this.value;" />