簡體   English   中英

jQuery Validation Plugin-在一個遠程調用中比較兩個表單字段

[英]jQuery Validation Plugin - compare two form fields in one remote call

我正在嘗試使用jQuery的validate插件來更改用戶名。 我設法使用遠程選項來檢查是否在數據庫中找到了用戶名。 以下是我的工作示例。 但是,如果示例表單中的Peter沒有更改其姓名,則該字段無效,因為該名稱已在數據庫中。 我以某種方式需要包含條件-如果#new_name與#current_name相同,則#new_name字段有效。 可能嗎?

jQuery驗證插件

<script type="text/javascript">
$(document).ready(function(){
   $("form").validate({
      rules: {
         new_name: {
            required: true,
            remote: {
               url: "names.php",
               type: "post",
             }
         }
      },
      messages: {
         new_name: {
            remote: jQuery.validator.format("{0} is already taken, please enter a different name.") 
     }
      }
   });
});
</script>

HTML形式:

<form method="post" id="myForm" action="">
 <!-- User enters a new name -->
 <input id="new_name" name="new_name" value="peter" type="text" />
 <!-- This is a current username, populated from the database -->
 <input id="current_name" name="current_name" value="peter" readonly="readonly" />
 <input type="submit" name="submit" id="submit"/>
</form>

遠程調用:names.php

<?php
   $request = trim(strtolower($_REQUEST['new_name']));
   // Here is the array of all user names in my database.
   $names = array('peter','jane','bill','george');
   $valid = 'true';
   foreach($names as $name) {
      if( strtolower($name) == $request ) {
         $valid = 'false';
      }
   }
   echo $valid;
?>

您沒有根據新名稱檢查當前名稱。

嘗試這個:

<?php
    $request = trim( strtolower( $_REQUEST['new_name'] ) );
    $old = trim( strtolower( $_REQUEST['current_name'] ) );
    // Here is the array of all user names in my database.
    $names = array( 'peter', 'jane', 'bill', 'george' );
    $valid = 'true';

    if ( $request == $old ) {
        $valid = "true";
    } else {
        foreach ( $names as $name ) {
            if ( strtolower( $name ) == $request ) {
                $valid = 'false';
            }
        }
    }
    echo $valid;
?>

現在,如果名稱未更改,則返回true,並且僅在更改名稱時才執行存在檢查。

我認為您應該這樣做(服務器端)

$request = trim(strtolower($_REQUEST['new_name']));
// Here is the array of all user names in my database.
$names = array('peter','jane','bill','george');
$valid = true;
foreach($names as $name) {
  if( strtolower($name) == $request ) {
     $valid = false;
  }
}
echo json_encode($valid);
rules: {
         new_name: {
            required: true,
            remote: {
               url: "names.php",
               type: "post",
               data: current_name: function () {
                return $('current_name').val();
                  new_name: function () {
                return $('new_name').val();
            }
             }
         }
      },

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM