2016-07-28 6 views
1

残念ながら、バルク/マス編集は実装されていません。何が非常に迷惑になることができますか?100を超えるレコードがある場合は特に更新する必要があります。私の場合、1000レコード前後あり、各レコードにはチェックボックスがありますが、現在チェックされているものはすべてチェックされていません。ウェブフォームの提出のチェックボックスをプログラムでチェックしてください

私はそれらのボックスをチェックするためにJavaScriptをオンザフライで実行しようとしました。しかし、それはjavascriptを実行した後、すべてのチェックボックスにチェックマークを表示しました。フォームを提出した後、チェックされていない最初のチェックボックス(チェックボックスとして表示されたもの)が元の状態に戻されます(未チェック)。

オンザフライのjavascript FireFoxのコンソールから実行しました。

var x = document.querySelectorAll('input[name^="example"][type="checkbox"]'), i = 0; 
for (i = 0; i < x.length; i++) { 
    x[i].checked = true; 
    x[i].value = true; // I also tried 'on' 
} 

チェックボックスの初期マークアップ(手動)がチェックされ、チェックなし:私の知る限りchecked属性は、プログラマが上にチェックボックスを表示できるようにするために、視覚的に表現するためにのみ存在している知っているように

<input name="example[1]" checked="" type="checkbox"> 
<input name="example[2]" type="checkbox"> 

要素の初期化。また注意しておきたいのは、チェックボックスのチェックを外すと要素が変わらないということです。

私は適切なアプローチを使用していますか?もし私が間違っているよりも?あるいは私は目標を達成するために別のアプローチをとっていますか?私は何をすべきですか?

+0

"フォームを送信した後、チェックボックスは元の状態に戻ります(チェックされていません)。"チェックボックスがページにレンダリングされるときに、チェックボックスのステータスに影響を与えるためにサーバーサイドのコードで何もしないと、値は自動的に変更されません。 HTTPはステートレスなので、何らかの形の永続化レイヤーを実装するステップを踏まない限り、現在の要求より前にあったものを覚えていません。 – ADyson

+0

@ADyson残念ながら私はソースを認識していませんが、 '$ _POST ['example']'変数を見ると、デフォルトで 'true'または' 'on''に値が設定されていますボックスをチェックした後のチェックボックス入力(マークアップには表示されません)、そうですか?基本的に私はこのポスト変数をwebformで修正しようとしています。おそらく私は郵便配達員を使うべきでしょうか? – Fleuv

+0

HTMLフォームの奇妙な点は、チェックボックスがチェックされていないと、ポストバックが発生したときに$ _POST変数が存在しないことです。私は、ページをもう一度レンダリングするときに何が起こるかについて話していました。ページをレンダリングするコードでは、指定されたチェックボックスに$ _POST変数があるかどうかが考慮されていないと、提出する前にそれをチェックしたかどうかを覚えておいてください。 – ADyson

答えて

2

次を使用してみてください: -

x[i].setAttribute('checked', 'checked'); 

、あなたのオリジナルのコードを実行した後に入力を調べる場合は、それが唯一のこれはあなたのhtml異なり

<input name="example[2]" type="checkbox" value="true"> 

value属性を設定し、見ることができますチェックされた属性が設定されているチェックボックスを手動でクリックします。

+0

残念ながら、私は 'x [i] .setAttribute( 'checked'、$ foo)と' x [i] .checked = $ foo'の間に違いはないと思います。 '$ foo'は'true'、' '''、' 'checked''のいずれかです。 – Fleuv

+1

-if(!x [i] .checked){x [i] .click();でチェックされていない入力に対してclickイベントをトリガーしてトリガーできます。 } – Joe

+0

これはうまくいくはずです。しかし、おそらく私はデータベースや何かを編集する必要はありませんでした。 – Fleuv

関連する問題