1

入力ボックスの最初の 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" />
4

4 に答える 4

0
  • インライン(DOMゼロ)イベントを回避し、この種のことを一元的に処理します
  • にタイプミスがあり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);
于 2012-07-04T10:49:09.673 に答える
0

このコードが機能しない理由は 3 つあります。

  1. lenghtする必要がありますlength
  2. txt_url.lengthする必要がありますthis.value.length
  3. 条件)の最後にクロージングがありません。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" />

デモ: http://jsfiddle.net/J5Uxt/

于 2012-07-04T10:44:53.323 に答える
0

使用した関数(txt_url.length)にスペルミスがあります。

それは私が信じているtxt_url.lengthでなければなりません。また、URL を検証したい場合は、ネット上でより優れた正規表現を利用できます。

于 2012-07-04T10:45:50.093 に答える
0

修正されたコードは

<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;" />
于 2012-07-04T11:20:46.393 に答える