2012-01-11 72 views
2

我發現了大量的解決方案,用於在字段集中時清除字段中的默認文本,然後在用戶沒有輸入任何內容的情況下退出字段時將其替換。一個我終於有去來自電動工具箱(http://www.electrictoolbox.com/jquery-change-default-value-on-focus/)這種解決方案:HTML表單 - 不寫入默認值

$('.default-value').each(function() { 
var default_value = this.value; 
$(this).focus(function() { 
    if(this.value == default_value) { 
     this.value = ''; 
    } 
}); 
$(this).blur(function() { 
    if(this.value == '') { 
     this.value = default_value; 
    } 
}); 
}); 

這只是正常;關注時,類默認值的每個文本輸入字段都會切換到空白字段。當我離開該字段時,如果沒有輸入任何內容,或者輸入了內容,則返回默認值,那麼該數據將保留在該字段中。到現在爲止還挺好。

然而這裏有一個問題;當用戶提交表單時,該字段默認的數據正在寫入數據庫。由於並非所有的字段都是必需的,我們有幾個用戶可能不會選擇填寫。這意味着我們有一個最終的數據列表,其中有很多人的地址爲:「John Sample,街道地址,地址2,城市州郵編」。

我最喜歡的是能夠告訴表單不要提交字段,如果其中的信息匹配默認值。我不知道的JavaScript - 我只是拼湊的代碼,我可以找到 - 所以我敢肯定,我有語法錯誤,但理想的情況是這樣的:

onsubmit 
if address1 = "Street Address" 
then address1 = "" 

是否有任何合理的清潔和簡單的方法來做到這一點? (另外,如果你可以解釋它,就好像你正在和某個最近遭受創傷性腦損傷的人說話一樣,那也不錯。)

回答

4

你知道佔位符html5屬性嗎?

<input type="text" placeholder="default text"/> 
+2

這是顯示示例文本的正確方法。主要問題是瀏覽器對它的支持可能是偶然的(http://caniuse.com/#search=placeholder)。儘管不少瀏覽器都實現了它,但對於那些不使用衆多jQuery插件之一的用戶來說,實現一個回退很容易(比如http://www.iliadraznin.com/2011/02/jquery-placeholder-plugin /) – djlumley 2012-01-11 23:04:38

+0

謝謝djlumley,這個插件解決了我提交佔位符文本的問題,以及處理不做HTML5佔位符的舊版瀏覽器。真棒! – deweydb 2012-04-18 00:10:10

0

在您提交處理程序,每個領域迭代,看是否字段值等於標籤,在這種情況下設置爲空。

0

您可以簡單地使用佔位符屬性!

http://jsfiddle.net/3efja/

+0

Firefox 3.7+和Chrome/Safari 4.0+支持佔位符文本,但Opera遲到了,Internet Explorer與往常一樣明顯缺失。 – deweydb 2012-04-17 23:49:45

0

的語法是

$('.your-form').submit(function(e) { 
    e.preventDefault(); // stop the form's default action of submitting 


    if (validateForm()) { 
     $(this).submit(); // proceed to normal processing 
    } 
}); 

// the over-all validation function 
function validateForm() 
{ 
    if ($('.the-field').val() == 'default value') { 
     return false; 
    } 

    // the rest of your fields... 

    return true; 
} 
0

上的負載,您應該通過每個字段創建默認值的數組,然後提交,循環,看看它是否仍然有默認情況下,如果是,請將其設置爲空白。

唯一的問題是如果他們的名字真的是「名字」。