私はあること(Niklas' answerと同様のアプローチを提案するつもりでした私は何か重要な、またはおそらくリスで中断された前)。だからそれと一緒に行く(と私から+1
)。
ポイントのカップルは、しかし:
- は
width
とheight
フィールドの内容を検証します。または、少なくともparseInt
を使用してください。そうでない場合、ユーザーが数字以外の文字を入力すると、正規表現は一致を停止します。
[0-9]+
の代わりに[0-9]*
に一致します。後者は、ユーザがフィールドを空のままにした場合に正規表現を壊すでしょう。もちろん、val = parseInt(...) || 0
を実行しても問題は解決します。言い換えれば
、私はこのような何かしたい:
JSFiddle:http://jsfiddle.net/PPvG/j8dT9/
var re = /\/Content\/Image\/([0-9]*)\/[0-9]*\/[0-9]*\//,
url = $('#url'),
val = url.val(),
width = parseInt($("#txtwidth").val(), 10) || 0,
height = parseInt($("#txtheight").val(), 10) || 0;
if (re.test(val)) {
val = val.replace(re, "/Content/Image/$1/" + width + "/" + height + "/");
url.val(val);
}
また、パス(/Content/Image/
)は、将来的に変更される可能性がある場合には、あなたが使用することができますがこのより一般的な正規表現:/^\/(.+)\/([0-9]*)\/[0-9]*\/[0-9]*\//
と置換文字列は/$1/$2/
で始まります。 (this JSFiddleを参照してください。)
最後に、私はkeypress
にバインドしません。一部のブラウザで起こりうる副作用(例えば、change
イベントが処理されないなど)以外にも、UXに関する懸念があります。ほとんどのユーザーはblur
に入力を処理するウィジェットを入力するために使用されます。なぜならそれらのネイティブアプリはそのように機能するからです。さらに、多くのユーザーは数字を入力するときにキーボードを見ます(数字パッドはまれになってきています)。
より優れた実装:キープレスイベントを考慮し、2つの入力に1つのコードを使用することをお勧めします。 – CedX
.bind :)の代わりに.liveを使用したときにうまくいった:) tyvm :) –