質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

解決済

2回答

1102閲覧

valueが0か空白の要素を削除してPOSTする方法

pgn

総合スコア11

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

0クリップ

投稿2018/04/20 05:12

javascript初心者ですみません…
調べればいいのですが時間がなくお力を貸してほしいです!

formでsabmit時に、valueが0か空白の要素を削除してPOSTする方法はありますか?

<form name="order" action="test.php" method="post" onsubmit="return check()";> <input type="test name="item1" value=""> <input type="test name="item2" value=""> <input type="test name="item3" value=""> <input type="test name="item4" value=""> <input type="test name="item5" value=""> <input type="test name="item6" value=""> <input type="submit" value="買い物かごに入れる"> </form> <script type="text/javascript"> function check() { } </script>

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

defghi1977

2018/04/20 05:15

> javascript初心者ですみません… 調べればいいのですが時間がなくお力を貸してほしいです! 主観に関わる余計な記述は無用です.
date

2018/04/20 05:25 編集

inputにtestなんてありませんがこれは打ち間違いなのかこう入れているのか"で閉じられていないのも不明です
pgn

2018/04/20 05:29

すみません、とにかくあわてていて! input type="text" です
guest

回答2

0

別フォームを作ってサブミットすれば実現できると思いますが
普通は、受け取った側で判断することです

sample

一応サンプルだけつけておきます

javascript

1document.addEventListener('submit',function(e){ 2 var dummy=document.querySelector('#dummy'); 3 if(dummy) dummy.parentNode.removeChild(dummy); 4 var t=e.target; 5 if(t.name=="order"){ 6 e.preventDefault(); 7 var f=t.cloneNode(true); 8 f.style.display="none"; 9 console.log(f); 10 f.setAttribute("id","dummy"); 11 for(var i=f.elements.length-1;i>=0;i--){ 12 var ele=f.elements[i]; 13 if(ele.type=="text" && (ele.value=="" || ele.value=="0")){ 14 ele.parentNode.removeChild(ele); 15 } 16 } 17 document.querySelector('body').appendChild(f); 18 f.submit(); 19 }; 20}); 21

HTML

1<body> 2<form name="order" method="post"> 3<input type="text" name="item1" value=""> 4<input type="text" name="item2" value=""> 5<input type="text" name="item3" value=""> 6<input type="text" name="item4" value=""> 7<input type="text" name="item5" value=""> 8<input type="text" name="item6" value=""> 9<input type="submit" value="買い物かごに入れる"> 10</form> 11</body>

ペアを消す

javascript

1<?PHP 2print_r($_POST); 3?> 4<script> 5document.addEventListener('submit',function(e){ 6 var dummy=document.querySelector('#dummy'); 7 if(dummy) dummy.parentNode.removeChild(dummy); 8 var t=e.target; 9 if(t.name=="order"){ 10 e.preventDefault(); 11 var f=t.cloneNode(true); 12 f.style.display="none"; 13 console.log(f); 14 f.setAttribute("id","dummy"); 15 for(var i=f.elements.length-1;i>=0;i--){ 16 var ele=f.elements[i]; 17 if(ele.type.match(/text/) && (ele.value.match(/^0?$/))){ 18 ele.parentNode.removeChild(ele); 19 if(r=ele.name.match(/^(item_)(\d+)$/)){; 20 var pair=f.elements[r[1]+"no_"+r[2]]; 21 if(pair) pair.parentNode.removeChild(pair); 22 } 23 } 24 } 25 document.querySelector('body').appendChild(f); 26 f.submit(); 27 }; 28}); 29</script> 30<body> 31<form name="order" method="post"> 32<input type="text" name="test" value=""> 33 34 35<input type="text" name="item_01" value=""> 36<input name="item_no_01" type="hidden" value="000001" /> 37 38<input type="text" name="item_02" value=""> 39<input name="item_no_02" type="hidden" value="000201" /> 40 41<input type="text" name="item_03" value=""> 42<input name="item_no_03" type="hidden" value="030001" /> 43 44<input type="text" name="item_04" value=""> 45<input name="item_no_04" type="hidden" value="000003" /><input type="submit" value="買い物かごに入れる"> 46</form> 47</body> 48

投稿2018/04/20 05:20

編集2018/04/20 08:23
yambejp

総合スコア114777

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

pgn

2018/04/20 05:21

ありがとうございます。 受け取り側は手を加えられないとのことで困っております・
yambejp

2018/04/20 05:44

sampleつけておきました あくまでも姑息な手段になるのでおすすめしないことは理解下さい
pgn

2018/04/20 07:24

ありがとうございます!!! 思い通りの動きになりました! >おすすめしないことは理解下さい はい!受け取り側が対応するまでの応急処置とさせていただきます! すみません、実はもう次の段階がありまして、 以下のように数量入力する要素とペアになった、IDをhiddenで送っており、そちらも一緒に削除したいのです。。。 可能でしょうか・・・(><) -------------------------- <input type="text" name="item_01" value=""> <input name="item_no_01" type="hidden" value="000001" /> <input type="text" name="item_02" value=""> <input name="item_no_02" type="hidden" value="000201" /> <input type="text" name="item_03" value=""> <input name="item_no_03" type="hidden" value="030001" /> <input type="text" name="item_04" value=""> <input name="item_no_04" type="hidden" value="000003" />
yambejp

2018/04/20 08:23

ペアがあったらそれも消すサンプルつけときました
pgn

2018/04/20 08:55 編集

ありがとうございます… 今日1日頑張ってるのが一瞬で解決し、感謝しきれません。。。 先ほど、数量とIDのnameを item_●●、item_no_●●と書いたのですが 正確には別の文字列でして、、、 自分なりに以下にしてみたのですが、目的の文字列は生成できましたが 要素が消えてくれません。。。 ------------------- //一緒に削除するhiddenタグのnameを求める var delname = ele.name; var dal = delname.replace( /item_/g,''); var dalid = 'no_'+ dal; if(dalid) dalid.parentNode.removeChild(dalid); ------------------- ほんとになにからなにまで申し訳ありません。。。 ある程度お教えいただければできるかと思ったのですが、そう簡単にはいきませんでした。。。
pgn

2018/04/20 09:02

すみません!!解決しました!!!! 本当に本当にありがとうございました!! 弟子入りしたいぐらいです・・・ 本当に感謝いたします!!!
yambejp

2018/04/20 09:03

> 正確には別の文字列でして、、、 具体的に提示していただけないと回答のしようがないですね
guest

0

ベストアンサー

フォーム部品にdisabled=trueとすることでフォームの送信対象から外れることを使えばよいでしょう.

HTML

1<form id="f"> 2 <input type="text" name="a"/> 3 <input type="text" name="b"/> 4 <button type="submit">送信</button> 5</form>

JavaScript

1f.onsubmit = e => [].forEach.call(f.elements, input => (input.value == "" || +input.value === 0) && (input.disabled = true));


https://developer.mozilla.org/ja/docs/Web/HTML/Element/Input

投稿2018/04/20 05:38

defghi1977

総合スコア4756

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yambejp

2018/04/20 05:44

disabledは戻ってきたりしたとき大変ですよ
defghi1977

2018/04/20 05:50

確かにベストではありませんが. その時はその時ということで あとは設計上の問題かと思います
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問