簡體   English   中英

在 PHP 或 JAVASCRIPT 中回郵?

[英]POST BACK in PHP or JAVASCRIPT?

如何回發已經在文本字段中的數據?

示例:如果我錯過了其中一個必填字段,當我單擊提交按鈕時會提示錯誤。

如何使用 php 或 javascript 以該形式回發數據並將鼠標的 cursor 直接定位到導致錯誤的字段?

PHP 中沒有自動寫回字段信息的方法,因此您只需將其回顯即可。

假設您有一個“用戶名”字段( <input type="text" name="username" /> ),您只需要添加以下內容:

value="<?php echo isset($_POST['username']) ? $_POST['username'] : ''; ?>"

或者如果你喜歡更多:

value="<?php if(isset($_POST['username'])) echo $_POST['username']; ?>"

變成 ''

這聽起來像是基本的表單驗證。 我建議閱讀其中一些教程或尋找一些預先構建的 PHP 表單驗證機制。

  1. 使用 PHP 進行表單驗證
  2. PHP/CSS 表單驗證
  3. PHP 表單驗證

如果您使用自己的庫,一些框架(例如CodeIgniter)會為您執行此操作。 值得一試這樣的框架,因為它們提供了許多其他好處。 當然,轉移現有應用程序並不總是可能的,但記住未來仍然很有用。

如果我理解正確,你想保留用戶已經輸入的任何數據,告訴他他做錯了什么,最好關注壞的領域。 如果是這樣,那么這是一個非常基本的示例,它使用具有兩個字段的表單,兩個字段都需要填寫才能繼續。

<?php

$field1=$_POST['field1'];
$field2=$_POST['field2'];

$badField="";
if($_POST['form_action']=="submitted") {
    //Check incoming data
    if(empty($field1)) {
        $badField="field1";
        echo 'field1 is empty<br>';
    }
    elseif(empty($field2)) {
        $badField="field2";
        echo 'field2 is empty<br>';
    }
    else {  //Everything ok - move to next page
        header('Location: <next page>');
    }
}

echo '<form name="mybo" action="' . $_SERVER['PHP_SELF'] . '" method="POST">
        <input type="text" name="field1" value="' . $field1 . '"><br>
        <input type="text" name="field2" value="' . $field2 . '"><br>
        <input type="submit" name="Submit" value="    Enter    ">
        <input type="hidden" name="form_action" value="submitted">
    </form>';

//Focus on empty field
if(!empty($badField)) {
    echo '<SCRIPT language="JavaScript">
        document.mybo.' . $badField . '.focus(); </SCRIPT>';
}
?>

我認為 Moav 的回答是“哲學上”正確的,但是如果你想這樣做,你可以:

1) 通過 GET 或 POST 傳遞文本控件 id; 2) 在服務器上檢查錯誤情況; 3)用頁面上的該值填充隱藏的輸入字段返回 4)如果錯誤,您可以使用 JS:window.onload = init; // 這里初始化東西 function init() { checkForError(); }

function checkForError() { var h = document.getElementById("error_field"); var v = h.value; if(v) document.getElementById(v).focus(); }

但是,如果您對每個錯誤字段都這樣做,就會有一個帖子,從用戶的角度來看,這很無聊......所以最好采用其他方法......

我會采取不同的方法:

驗證應該在 JS 中,因此您永遠不會丟失數據,因為您不提交。 提交並在服務器上捕獲的任何錯誤數據都是由於有人試圖通過您的 JS 驗證,這意味着他通常有犯罪的想法。

暫無
暫無

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

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