2011-08-08 65 views
0

首先代碼:JavaScript值比較是不合邏輯

function focusAction(thefield, autofill) { 

if (thefield.value == thefield.defaultValue && (thefield.style.color == 'rgb(153, 153, 153)' || thefield.style.color == '#999999')) { 
    thefield.style.color = "#000000"; 
    if (autofill == "") 
    thefield.value = ''; 
} 
} 

function blurAction(thefield, autofill) { 
    //var content = thefield.value; 
if (thefield.value == '' || thefield.value == null) { 
    thefield.value = thefield.defaultValue; 
    if (autofill == "") 
     thefield.style.color = "#999999"; 
} else { 
    //thefield.style.color="green"; 
} 
} 

因此,這裏的交易:如果我把如果(thefield.value == 「」 || thefield.value == NULL)它的工作原理,但你必須有一個空間。如果該框爲空,則不起作用。這隻影響textareas。它適用於空白文本框。

我真的很困惑,任何人有任何想法,爲什麼一個空間的作品,但空的「」或「'或null不?

+0

像往常一樣 - 它不是與JavaScript的問題 - 這是你的代碼有問題。可能是外部部分張貼在問題 –

+0

你應該使用jsfiddle.net來顯示一個例子,你也許想嘗試'.text'而不是value。 – vol7ron

+1

這是因爲您的TEXTAREA元素可能包含一些空白字符。我推薦這樣做:'if(thefield.value.trim()==='')'(請注意'trim()'在IE8中沒有實現,所以你必須手工處理。) –

回答

0

建議:

  • 視覺改變使用類。 CSS比JavaScript更容易改變,並且更加健壯。
  • 我建議使用更強大的表單插件。如果這是不可取的,那很好。我只是建議使用插件,因爲有更多的支持,通常比自己創建的項目有更少的錯誤。
  • 修剪您的輸入。這意味着領先和尾隨空格被忽略,讓您更好地瞭解實際存在的內容。這可能會解決你的問題,除非是由於下一點。
  • 您的意思是比較一個空的空間嗎?通常你會想知道它是空的還是空的,而不是它是否有空格或空。
  • 使用===與null進行比較。
0

也許它的價值反相你的代碼,這樣測試它:

if (thefield.value && thefield.value.length > 0) { 
    //thefield.style.color="green"; 
} 
else { 
    thefield.value = thefield.defaultValue; 
    if (autofill == "") 
     thefield.style.color = "#999999"; 
}