内容がクリアされたテキスト枠の検知を達成したいができない
標題の件、予め、数値のみの入力制御、カンマ表示、フォーカス時の数値表示化を施したテキスト枠があります。(以下要領で)
$("input[name=amount]").on({
"keydown": function(e) {
var k = e.keyCode;
if (!((k >= 48 && k <= 57) || (k >= 96 && k <= 105) || k == 32 || k == 8 || k == 9 || k == 46 || k == 39 || k == 37)) {
return false;
}
},
"blur": function() {
var num = $(this).val();
num = num.replace(/(\d)(?=(\d\d\d)+$)/g, "$1,");
$(this).val(num);
},
"focus": function() {
var num = $(this).val();
num = num.replace(/,/g, "");
$(this).val(num);
}
});
こちらの枠の内容がクリアされた際、近隣のラベル要素に表示された内容も自動でクリアされるようコーディングしているつもりですが、作用してくれません。
(数量の入力枠をクリアしたら、単価表示をクリア、ということを達成したいです)
当該枠に関わる動作が全く制御できていないわけではありません。
検知できている条件式と、検知できていない条件式があるようです、
以下Blurイベント内の、動作できている部分、動作できていない部分をコメントで記載しています。
//数量のテキストボックスからフォーカスが外れたら
$("input[name=amount]").on("blur",function() {
//0の入力は拒む ⇒【動作OK】
if ($(this).val() == 0) {
$(this).val("");
return false;
}
//TD要素まで遡り、下方向にテキスト要素・ラベル要素を取得。
//指数指定で、品名コード枠と原価単価枠のラベルを捉える。
var input = $(this).parent().parent().find("input"); //品名コード枠
var maker_val = input.eq(0).val();
var label = $(this).parent().parent().find("label"); //原価単価枠
//品名コード枠の入力が先行されている必要あり ⇒【動作OK】
if (maker_val == "" && $(this).val() != "") {
$(this).val("");
return false;
}
//数量枠をクリアされたら、単価表示をクリア ⇒******【動作できない】*******
if (maker_val != "" && $(this).val() == "") {
alert("***なんで***"); // 『表示もされない』
label.eq(3).html("");
return false;
}
//品名コード枠の入力と数量枠が1以上の入力で、単価を表示 ⇒【動作OK】
if (maker_val != "" && $(this).val() != "") {
$.ajax({
url: "cdcostget.php",
type: "POST",
dataType: "json",
data: {
maker_no: maker_val,
maker_no2 : costGetYM()
}
})
以下 省略
====質問====
上記コーディング内の******【動作できない】******と記載した部分は、
なぜキーボード(DELETE・BackSpaceキー)で内容をてクリアが達成されても、働いてくれないのでしょうか?(.val()==""では聞き方が間違っているのでしょうか、それとも何か残っているのでしょうか?)
大変初歩的な質問と思われますが、何卒よろしくお願い申し上げます。