4

デフォルト値が のテキストエリアがありますhttp://。ユーザーが URL を貼り付けると (ほとんどの人のように、自分が何をしているのかわからない場合)、次のようになりますhttp://http://www.google.comhttp://http://JavaScript を使って削除するとすぐにサイトを削除するサイトを見たことがあります。

JavaScript に詳しくないので、誰か助けてくれませんか?

フォーカスだけでフィールドをクリアしたくありません。

4

4 に答える 4

3

シンプルに保ち、replace関数を使用します。

var url = "http://http://google.com";
url = url.replace("http://http://","http://");

... これは基本的に最初の文字列"http://http://"を 2 番目の文字列 "に置き換えhttp://"ます。

フィールドの内容が変更されたときにこれを呼び出す必要があります。たとえば、jQuery を使用する場合:

$("#myfield").change(function(e){
  $(this).val($(this).val().replace("http://http://","http://"));
});

jQuery なし (これについて 100% 確信があるわけではありません):

document.getElementById("myfield").onChange = function(){
  var val=document.getElementById("myfield").value;
  document.getElementById("myfield").value = value.replace("http://http://","http://");
}

無関係ですが、言及する価値があります: これは AJAX ではなく、単純な JavaScript です。Ajax は、XMLHTTP オブジェクトを使用してサーバーと非同期通信しようとするときに使用される用語です。

Ajax (非同期 JavaScript および XML の省略形) は、インタラクティブな Web アプリケーションを作成するためにクライアント側で使用される、相互に関連する Web 開発手法のグループです。Ajax を使用すると、Web アプリケーションは、既存のページの表示や動作に干渉することなく、サーバーからバックグラウンドで非同期にデータを取得できます。

(経由)

于 2010-06-14T15:12:57.213 に答える
2

そのような魔法を行うためのAjaxはまったくありません。

これはそれを行います:

$(function(){
  $('textarea').bind('keydown', function(e){
    var $this = $(this);
     if(e.which === 86 && e.ctrlKey){
       setTimeout(function(){
          $this.val($this.val().replace(/http:\/\/http:\/\//,"http://"));
       }, 1);
     }
  });
});​

これは、既に存在する場合に置き換えhttp://られます。ユーザーがコンテキスト メニューを使用して貼り付けを行う場合ctrl+v、イベントで同じルーチンを呼び出すこともできます。change

于 2010-06-14T15:22:32.767 に答える
1

none regex オプションがあると常に便利です (これらの貴重なマイクロ秒を節約できます!):

var url = "http://http://google.com";
url = url.substring(url.lastIndexOf("http://"));

// -> "http://google.com"
于 2010-06-14T15:15:17.137 に答える
1

そのために ajax は必要ありません。単純な JavaScript だけでうまくいくのです。

jQuery(document).ready(function(){

    jQuery('#idofurtextfield').blur(function(){

        jQuery(this).val(jQuery(this).val().replace(/(http:\/\/)\1/, '$1'));

    });

});
于 2010-06-14T15:16:55.997 に答える