2011-01-30 34 views
1

我有三個字段預填充有默認值,像這樣的形式:如何在提交表單時更改文本框的值?

<input type=text name=first value="First Name" class="unfilled" /> 

當單擊該文本框,類unfilled從文本框中取出,然後將文本框被置空,因此用戶可以輸入他/她自己的信息。

問題是,當表單被提交時,其獲取提交這些默認值,這是搞亂了服務器端驗證。我該怎麼做,以便當提交表單時,所有具有默認值的字段都是空白的,所以服務器端驗證會拋出錯誤:'請填寫此字段'?

我想下面的代碼是不工作:

$("#myForm").submit(function() 
     { 
      $(".unfilled").val(''); 
     } 
); 

這確實讓領域的空白,但服務器仍然接收他們與他們先前的默認值。

+0

難道是你錯過的`submit`方法右括號? – Phil 2011-01-30 23:56:28

+0

不,我只是複製並粘貼並錯過了那一行 – 2011-01-30 23:59:33

回答

3

我想你只是有一個語法錯誤。您在submit方法中錯過了右括號。

我剛掀起這件事,它工作正常

<!DOCTYPE html> 
<html> 
    <body> 
     <?php 
     var_dump($_POST); 
     ?> 
     <form action="test.php" method="post"> 
      <input type="text" name="first" value="First Name" class="unfilled"> 
      <input type="submit"> 
     </form> 
     <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script> 
     <script type="text/javascript"> 
      jQuery(function($) { 
       $('form').submit(function() { 
        $('.unfilled').val(''); 
       }); 
      }); 
     </script> 
    </body> 
</html> 
0

我認爲你需要JQuery的.click()函數。

例子:

$(function() { // shorthand for document.ready 
     $('.unfilled').click(function() { 
     $(this) 
      .val('') 
      .removeClass('unfilled'); 
     }) 
    }); 

UPDATE

對不起,我missunderstand你,以爲你需要像一個佔位符的功能。

你可以用return false;做到這一點,但是這會取消提交。或者像GreenWebDev說的那樣使用e.preventDefault();

+1

提交是正確的事件(onsubmit),而不是點擊,用於捕獲表單的提交操作。 http://api.jquery.com/submit/ – 2011-01-30 23:53:58

3

您需要先停止表單執行,更改值,然後手動提交表單。

$("#myForm").submit(function(e) 
{ 
    // Stop the form submit 
    e.preventDefault(); 

    $(".unfilled").val(''); 
    $(this).submit(); 
} 
+0

當我嘗試此代碼時,表單根本沒有提交?它變得卡住 – 2011-01-30 23:54:58

+0

你根本不需要這樣做 – Phil 2011-01-30 23:57:01

0

如果你想要的形式提交,還是假的,如果你沒有,你必須return true;。 這種方法的問題是,在發佈這些值之前,這些字段會「閃爍」,從而產生一些不專業的感覺。 最好使用隱藏值並將它們設置爲submit()事件。

相關問題