1

私のアプリケーションは、ユーザーの電話番号を入力として受け取り、データベースに保存します。別のページで、他のユーザーに表示されるはずの電話番号を確認するようにユーザーに依頼します。この質問とは関係のないいくつかのビジネス上の理由で行われているため、なぜこれを行っているのかについて質問しないでください。

現在、これらの電話番号を表示して、表示されるはずの電話番号を確認するか、以前に確認した電話番号のチェックを外すようにユーザーに依頼しています。次の未解決の質問があります。

  1. ユーザーがフォームを送信すると、彼の電話番号がわかりません。チェックボックスを電話番号に関連付けるにはどうすればよいですか?
  2. 非表示のフィールドを使用する場合、これらの入力フィールドに、IDとして対応する電話番号を指定するのが標準的な方法ですか?
4

2 に答える 2

1

電話番号が繰り返されないと仮定すると、最も簡単な方法は、各チェックボックスの値を関連する電話番号に設定することです。

0262543210 <input type="checkbox" name="makeVisible" value="0262543210">
0265511223 <input type="checkbox" name="makeVisible" value="0265511223">
0398123456 <input type="checkbox" name="makeVisible" value="0398123456">

(明らかに、ある種のフォーマット、表、または順序付けられていないリストなどを追加します。)

次に、サーバー側のコードmakeVisibleで、チェックされたものだけが送信されることを念頭に置いて、各(または名前を付けた)値を処理します。このメソッドにはJavaScriptは必要ありません。

すべての数値に対してyes/noまたはtrue/false(表示/非表示)の値を送信する場合、no-JSの方法はラジオボタンを使用することです。ただし、チェックボックスを使用する最も簡単な方法は、チェックボックスの状態に基づいて非表示のフィールドを設定することです。

<table>
  <tr>
    <th>Phone Number</th>
    <th>Make visible?</th>
  </tr>
  <tr>
    <td>0262543210</tr>
    <td>
       <input type="hidden" name="number" value="0262543210">
       <input type="hidden" name="makeVisible">
       <input type="checkbox" class="numbervisibility">
    </td>
  </tr>
  <tr>
    <td>0265511223</tr>
    <td>
       <input type="hidden" name="number" value="0265511223">
       <input type="hidden" name="makeVisible">
       <input type="checkbox" class="numbervisibility">
    </td>
  </tr>
  <!-- etc. -->
</table>

必要に応じて、レコードIDを使用して非表示フィールドを追加するか、電話番号の代わりにレコードIDを使用します(データ構造に適したものは何でも)。

次に、いくつかの単純なjQueryを使用して、チェックボックスが変更されたときに非表示の値を設定します。

$(".numbervisibility").click(function() {
    $(this).closest("td").find('input[name="makeVisible"]').val(this.checked ? "Y" : "N");
});

そうすれば、サーバー側では、フィールドの配列が番号と関連する可視性設定と一致することになります。

PHPを使用している場合は、繰り返しフィールドに。[]のように末尾に名前を付ける必要があることに注意してください"makeVisible[]"

(もちろん、どちらのソリューションでも、サーバー側のコードを使用して電話番号をhtmlに挿入します。)

于 2013-01-28T00:18:36.677 に答える
0

ページを送信するときは、確かにデータをPhoneNumber / Showペアのコレクションとしてバックエンド処理コード(プラットフォームが何であれ)に送信し、これに基づいてデータベースに作成します(ただし、それを実行します)。 )、特定のペアのデータに基づいて表示フラグを設定します。

つまり、jqueryでは(ノックアウトのようなデータバインディングフレームワークを使用していないと仮定します)、ユーザーが送信ボタンをクリックすると、チェックボックス/電話を格納するすべてのコンテナーに$()が追加されます。要素に番号を付け、次のように送信するJSONを作成します。

{
   UserID:xxx,
  [{PhoneNumber:12345,Show:true},
  {PhoneNumber:999,Show:false}]
}

次に送信しますが、通常はデータを送信します

そして、サーバー側には、この情報を受け取り、ループしてデータベースで実行する必要があることをすべて実行し、存在しない場合は作成し、存在する場合は更新するための対応するクラスがあります。

それとも私は何かを逃したことがありますか?プラットフォーム、アプリがページを表示する方法(ネイティブ、html5)、現在サーバーにデータを送信する方法などについて、もう少し情報を提供できますか?

于 2013-01-28T00:14:22.517 に答える