0

JS、JQuery、PHPに関しては、あらゆる面で完全なn00bなので、助けが必要になります。

JSの基本的な知識を持っている人にとっては本当に簡単かもしれませんが、私にとってはそれほど簡単ではありません。

index.phpに次の部分があります。

<form method="get" id="searchform" action="http://wwwapps.ups.com/WebTracking/track?HTMLVersion=5.0&loc=nl_NL&Requester=UPSHome&WBPM_lid=homepage%2Fct1.html_pnl_trk" target="_blank" >
<input type="text" value="" name="trackNums" id="ups" />
<input type="hidden" name="track.x" value="Traceren">
<input type="hidden" name="loc" value="nl_NL">
<input type="image" src="afbeeldingen/search_btn.png" id="searchsubmit" />
</form>

.jsファイルには次のようなものがあります。

$(document).ready(function() {
    $("#ups").attr("value", "UPS Trackingscode...");
    var text = "UPS Trackingscode...";
    $("#ups").focus(function() {
        $(this).addClass("active");
        if($(this).attr("value") == text) $(this).attr("value", "");
    });
    $("#ups").blur(function() {
        $(this).removeClass("active");
        if($(this).attr("value") == "") $(this).attr("value", text);
    });
});

これを(上部に).jsファイルに追加しました:

function removeSpaces(string) {
    return string.split(' ').join('');
}

しかし、この部分をindex.php(form-section)に追加すると、機能しません。

<input type="text" onblur="this.value=removeSpaces(this.value);">

現在のJSにも組み込む必要があると思いますが、これを行う方法や変更/追加する方法がわかりません。

ここで私が達成しようとしているのは、トラッキングコードをテキストフィールドに貼り付けるたびに、スペースが自動的に削除されることです(スペースがある場合は、コピー/貼り付けアクションが正しくないため)。

特別なウェブサイトではなく、個人的な使用のためだけなので、自分のスタートページからパッケージをより簡単に追跡できます。

正しく説明できたと思います。基本的なJSスキルを持っている人にとってはおそらく1分もかからないでしょうが、私にとっては非常に困難です。:(

4

1 に答える 1

2

機能自体は問題なく動いています。それは単にスコープの問題です。次の 2 つのオプションがあります。

$(document).ready(function() { })1)関数をパーツの外に移動します

2)onblur="this.value=removeSpaces(this.value);"要素から を削除し、関数を破棄して、それに応じたイベント ハンドラーを記述します。

// identifier or class needed to target the element, i use id="target"
$("#target").on("focusout",function(){
   this.value = this.value.replace(/\s*/g,"");
});

2 番目の方法 (イベント ハンドラーを使用) は、クリーンで優れた方法と見なされます。しかし、どちらも有効です。

補足:

文字列からスペースを削除するには、replaceメソッドを正規表現に従って使用することをお勧めします (文字列全体の/\s*/gゼロ個以上の空白\s*を置き換えます (globally g) )。

$(this).attr("value")使用する代わりに $(this).val()

于 2013-02-01T08:45:45.790 に答える