0

我想在不提交表单的情况下检查两个文本框文本框中的值是否与另一个文本框匹配的值。keypress 事件正在处理这个问题,将值从 jour_info.php 页面发送到 get_sid.php 页面。我有两个文件

  1. jour_info.php
  2. get_sid.php

第一个文件中的代码

 <form method="post" name="journ_form" >
P-ISSN/ISBN<br/><input name="printissn" id="printissn_input" type="text" value="">
                <input type="text" name="pissnsid"  id="pissnsid" style="width: 30px;" autocomplete="off" value="">

                <span style="color: red;" id="feedback"></span>
 </form>

   <script type="text/javascript">
    $(document).ready(function(){
    $('#feedback').load('get_sid.php').show();

    $('#printissn_input').keyup(function(){

    $.post('get_sid.php', {printissn: journ_form.printissn.value},
      function(result) {
      document.getElementById('pissnsid').value = result;
   }); 
  });


   $('#pissnsid').keyup(function(){
    $.post('get_sid.php', {pissnsid: journ_form.pissnsid.value},
      function(result) {
        document.getElementById('printissn_input').value = result;
     });
   });
  });

第二个文件中的代码

    <?php
    include 'auth.php';

     $printissn = $_POST['printissn'];
     $pissnsid = $_POST['pissnsid'];

     if($printissn){
      $check = mysql_query("SELECT printissn, pissnsid FROM jour_entries WHERE    printissn='$printissn'");
      $check_num_rows = mysql_num_rows($check);
      while($row = mysql_fetch_array($check)){
        $get_printissnsid = $row['pissnsid'];
     if($check_num_rows == 0){
      echo '';
      } else if($check_num_rows == 1){
          echo $get_printissnsid; 
       }
        }
     } else if($pissnsid){
    $check = mysql_query("SELECT printissn, pissnsid FROM jour_entries WHERE  pissnsid='$pissnsid'");
     $check_num_rows = mysql_num_rows($check);
     while($row = mysql_fetch_array($check)){
    $get_printissn = $row['printissn'];

   if($check_num_rows == 0){
    echo '';
   } else if($check_num_rows == 1){
     echo $get_printissn;    
   } 
    }
   } 
   ?>

现在一切正常,问题是当在第一个文本框中输入一个值时,它会在第二个文本框中显示相应的匹配项。但是如果值与两个字段不匹配并且用户需要手动输入数据,就会出现问题。当没有匹配项并且用户在第一个文本框中输入一个值时,第二个文本框值就会消失。如何解决?

4

1 回答 1

0

在将结果放入其他输入字段之前检查结果是否有效:

function(result) {
    if (result != '') {   
        document.getElementById('pissnsid').value = result;
    }
}); 

您还需要修复您的 PHP。if ($check_num_rows == 0)检查不应该在循环内while,因为当没有行时循环永远不会执行。您甚至根本不需要循环——我假设这些查询只能返回 1 行。所以只需调用mysql_fetch_array()-- 如果它返回该行,你就有一个匹配,否则没有匹配,你应该echo ''.

于 2013-08-27T01:26:13.077 回答