備忘録:MTNoSearch廃止対策

最新のMT4.25からはクレームが飛びまくったのかMTNoSearchが復活していますが、それ以前の4.2環境もまだまだあるワケで、その場合の対策。

機能概要

  • 検索フォーム内に必ずデフォ文字か他の文字が入っている状態にする
  • 検索フォーム内でのEnterキーを封じる

両者の合わせ技で、フォームが空の状態での検索を出来なくさせます。
Enterでサクッと検索できなくなるけど、仕方ないね。
JS OFF環境?しらんがな(´・ω・`)

JavaScript


//**************************************************
// inputFocus/Blur
//--------------------------------------------------
function inputFocus(obj,txt) {
if (obj.value == txt) {
obj.style.color = "#333333";
obj.value = "";
}
}
function inputBlur(obj,txt){
if (obj.value == "") {
obj.style.color = "#cccccc";
obj.value = txt;
}
}

//**************************************************
// BlockEnter
//--------------------------------------------------
function BlockEnter(evt){
evt = (evt) ? evt : event; 
var charCode=(evt.charCode) ? evt.charCode : 
((evt.which) ? evt.which : evt.keyCode);
if ( Number(charCode) == 13 || Number(charCode) == 3) {
return false;
} else {
return true;
}
}
function attachBlockEnter(formid) {
var elements = document.forms[formid].elements;
for (var j=0; j < elements.length; j++) {
var e = elements[j];
if (e.type == "text"){
e.onkeypress=BlockEnter;
}
}
}

「BlockEnter」は下記URLのものを利用させていただきました。
http://blog.nomadscafe.jp/archives/000484.html

HTML側



<form method="〜" action="〜" id="search">
<input type="text" name="search" value="検索キーワード" style="color:#cccccc;" onfocus="inputFocus(this,'検索キーワード')" onblur="inputBlur(this,'検索キーワード')" onkeydown="return BlockEnter(event);" />

</form>
<script>attachBlockEnter('search');</script>

ご自由にご利用ください。