0

サブスクライバー名という名前のテキスト ボックスがあります。そのテキスト ボックスをダブルクリックすると、子ウィンドウが開きます。サブスクライバー名のリストは、mysql クエリの while ループを使用して子ウィンドウに表示されます。問題は、それをダブルクリックしたときです。値をundefinedとして渡します。この問題は、db テーブルからのサブスクライバー名のループが原因で発生します。どうすれば解決できますか? すぐに私を助けてください。ここに私のコードがあります。

<script type="text/javascript">
function displaymessage(){ 
  opener.document.cash_entry.sub_name.value = document.subscriber.subname.value;
  self.close();
}
</script>
<form>
<?php
$sel=mysql_query("select * from add_ticket");
while($row=mysql_fetch_array($sel)) { 
  $subscriber=$row['subscriber'];
?>
  <input type="text" name="subid" id="subid" value="<?php echo $subscriber; ?>"
  ondblclick="displaymessage()" readonly="true">
<?php } ?>
</form>
4

1 に答える 1

0

フォームに名前を付けておらず、フィールドに HTML コードとは異なる名前を付けており、同じ名前の要素が複数あるため、複数の場合は配列になります。

これを行う

<script type="text/javascript">
function displaymessage(fld){ 
  opener.document.cash_entry.sub_name.value = fld.value;
  self.close();
}
</script>
<form>
<?php
$sel=mysql_query("select * from add_ticket");
while($row=mysql_fetch_array($sel)) { 
  $subscriber=$row['subscriber'];
?>
  <input type="text" name="subname" 
  id="subid<?php echo $subscriber; ?>" 
  value="<?php echo $subscriber; ?>"
  ondblclick="displaymessage(this)" readonly="true">
<?php } ?>
</form>

なぜではない

  <input type="button" value="<?php echo $subscriber; ?>"
  onclick="displaymessage(this)" >

複数の値について、次のことができます

function displaymessage(fld){ 
  var parts = fld.value.split("|");
  opener.document.cash_entry.sub_name.value = parts[0];
  opener.document.cash_entry.sub_id.value = parts[1];
  self.close();
}


  <input type="button" 
  value="<?php echo $subscriber; ?>|<?php echo $subscriberID; ?>"
  onclick="displaymessage(this)" >
于 2012-05-23T12:15:44.070 に答える